home *** CD-ROM | disk | FTP | other *** search
/ The Hacker Chronicles - A…the Computer Underground / The Hacker Chronicles - A Tour of the Computer Underground (P-80 Systems).iso / network / nia74 < prev    next >
Text File  |  1992-09-26  |  153KB  |  3,259 lines

  1.    Founded By:    |  _                        _______
  2.  Guardian Of Time |  __      N.I.A.   _      ___   ___  Are you on any WAN? are
  3.    Judge Dredd    |  ____     ___    ___    ___     ___ you on Bitnet, Internet
  4. ------------------+  _____    ___    ___    ___     ___  Compuserve, MCI Mail,
  5.   \           /      ___ ___  ___    ___    ___________  Sprintmail, Applelink,
  6.    +---------+       ___  ___ ___    ___    ___________    Easynet, MilNet,
  7.    | 05MON18 |       ___   ______    ___    ___     ___    FidoNet, et al.?
  8.    | File 74 |       ___    _____    ___    ___     ___ If so please drop us a
  9.    +---------+               ____     _     __      ___        line at
  10.                               ___           _       ___  nia@nuchat.sccsi.com
  11.      Internal Affairs BBS      __   NIA074
  12.                                 _    Network Information Access
  13.                                        Ignorance, There's No Excuse.
  14.  
  15.                             NIA Issue 074 Volume 2
  16.    
  17.  
  18.      "I didn't invent the Unix security problem.  I just optimized it."
  19.  
  20.  
  21.         Greetings.  This newsletter is published on a non-regular basis and
  22. is only a hobby by the editors, not a job.  No responsibility is taken by
  23. the editors for this newsletter, all of that and the credit goes to the
  24. contributers.  We are changing format again to go with the changing times.
  25. First of all, there will be NO news unless it is first hand accounts of it.
  26. If you want news, there are plenty of other electronic 'zines and more
  27. efficient ways of getting it than to wait for an NIA issue to come out.
  28. Second, the articles are going to be getting technical.  There is only
  29. so many intro/basics we can publish/re-print.
  30.         We are looking for contributions.  All articles submitted must be in a
  31. regular format for the magazine.  There is a one month review time for the
  32. article to be chosen.  There is an additional one month revise time if the
  33. article is chosen.  We do keep copies of everything that is sent to us so if
  34. it is not published in the immediate issue than it could be published in a
  35. later issue (in which case you will be notified).  The readers make the
  36. magazine, so if you want to see better issues then do some research and
  37. send us reports.
  38.  
  39. ------------------------------------------------------------------------------
  40. 1. Introduction ......................................................Editors
  41. 2. Security Problems in TCP/IP Suite [01/02] ...................S.M. Bellovin
  42. 3. Security Problems in TCP/IP Suite [02/02] ...................S.M. Bellovin
  43. 4. Firewalls: The Design of Secure Internet Gateway ............Bill Cheswick
  44. 5. Notes on Centigram Systems ......................................Anonymous
  45. 6. How to Steal Information .......................................The Butler
  46. 7. Killer Chips: Physical Virus ...................Jean-Bernard Condat [CCCF]
  47. ------------------------------------------------------------------------------
  48.  
  49. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  50.  
  51.                              NIA074 / File 02
  52.  
  53.               Security Problems in the TCP/IP Protocol Suite
  54.  
  55.                               Part I of II
  56.  
  57.                               S.M. Bellovin
  58.  
  59.                           AT&T Bell Laboratories
  60.  
  61.                                  ABSTRACT
  62.  
  63.                  The TCP/IP protocol suite, which is very
  64.                  widely used today, was developed under
  65.                  the sponsorship of the Department of
  66.                  Defense.  Despite that, there are a
  67.                  number of serious security flaws
  68.                  inherent in the protocols, regardless of
  69.                  the correctness of any implementations.
  70.                  We describe a variety of attacks based
  71.                  on these flaws, including sequence
  72.                  number spoofing, routing attacks, source
  73.                  address spoofing, and authentication
  74.                  attacks.  We also present defenses
  75.                  against these attacks, and conclude with
  76.                  a discussion of broad-spectrum defenses
  77.                  such as encryption.
  78.  
  79.        1.  INTRODUCTION
  80.  
  81.        The TCP/IP protocol suite[1][2], which is very widely used
  82.        today, was developed under the sponsorship of the Department
  83.        of Defense.  Despite that, there are a number of serious
  84.        security flaws inherent in the protocols.  Some of these
  85.        flaws exist because hosts rely on IP source address for
  86.        authentication; the Berkeley "r-utilities"[3] are a
  87.        notable example.  Others exist because network control
  88.        mechanisms, and in particular routing protocols, have
  89.        minimal or non-existent authentication.
  90.  
  91.        When describing such attacks, our basic assumption is that
  92.        the attacker has more or less complete control over some
  93.        machine connected to the Internet.  This may be due to flaws
  94.        in that machine's own protection mechanisms, or it may be
  95.  
  96.        __________
  97.  
  98.          * Author's address: Room 3C-536B AT&T Bell Laboratories,
  99.            600 Mountain Avenue, Murray Hill, New Jersey 07974.
  100.  
  101.        Reprinted from Computer Communication Review Vol. 19
  102.        No. 2, p.32-48, April 1989.
  103.  
  104.        because that machine is a microcomputer, and inherently
  105.        unprotected.  Indeed, the attacker may even be a rogue
  106.        system administrator.
  107.  
  108.        1.1  Exclusions
  109.  
  110.        We are not concerned with flaws in particular
  111.        implementations of the protocols, such as those used by the
  112.        Internet "worm"[4][5][6].  Rather, we discuss generic
  113.        problems with the protocols themselves.  As will be seen,
  114.        careful implementation techniques can alleviate or prevent
  115.        some of these problems.  Some of the protocols we discuss
  116.        are derived from Berkeley's version of the UNIXr system;
  117.        others are generic Internet protocols.
  118.  
  119.        We are also not concerned with classic network attacks, such
  120.        as physical eavesdropping, or altered or injected messages.
  121.        We discuss such problems only in so far as they are
  122.        facilitated or possible because of protocol problems.
  123.  
  124.        For the most part, there is no discussion here of vendor-
  125.        specific protocols.  We do discuss some problems with
  126.        Berkeley's protocols, since these have become de facto
  127.        standards for many vendors, and not just for UNIX systems.
  128.  
  129.  
  130.        2.  TCP SEQUENCE NUMBER PREDICTION
  131.  
  132.        One of the more fascinating security holes was first
  133.        described by Morris[7].  Briefly, he used TCP sequence
  134.        number prediction to construct a TCP packet sequence without
  135.        ever receiving any responses from the server.  This allowed
  136.        him to spoof a trusted host on a local network.
  137.  
  138.        The normal TCP connection establishment sequence involves a
  139.        3-way handshake.  The client selects and transmits an
  140.        initial sequence number ISNC, the server acknowledges it and
  141.        sends its own sequence number ISNS, and the client
  142.        acknowledges that.  Following those three messages, data
  143.        transmission may take place.  The exchange may be shown
  144.        schematically as follows:
  145.  
  146.             C->S:SYN(ISNC)
  147.             S->C:SYN(ISNS),ACK(ISNC)
  148.             C->S:ACK(ISNS)
  149.             C->S:data
  150.                  and/or
  151.             S->C:data
  152.  
  153.        That is, for a conversation to take place, C must first hear
  154.        ISNS, a more or less random number.
  155.  
  156.        Suppose, though, that there was a way for an intruder X to
  157.        predict ISNS.  In that case, it could send the following
  158.        sequence to impersonate trusted host T:
  159.  
  160.             X->S:SYN(ISNX),SRC=T
  161.             S->T:SYN(ISNS),ACK(ISNX)
  162.             X->S:ACK(ISNS),SRC=T
  163.             X->S:ACK(ISNS),SRC=T,nasty-data
  164.  
  165.        Even though the message S->T does not go to X, X was able to
  166.        know its contents, and hence could send data.  If X were to
  167.        perform this attack on a connection that allows command
  168.        execution (i.e., the Berkeley rsh server), malicious
  169.        commands could be executed.
  170.  
  171.        How, then, to predict the random ISN?  In Berkeley systems,
  172.        the initial sequence number variable is incremented by a
  173.        constant amount once per second, and by half that amount
  174.        each time a connection is initiated.  Thus, if one initiates
  175.        a legitimate connection and observes the ISNS used, one can
  176.        calculate, with a high degree of confidence, ISNS' used on
  177.        the next connection attempt.
  178.  
  179.        Morris points out that the reply message
  180.  
  181.             S->T:SYN(ISNS),ACK(ISNX)
  182.  
  183.        does not in fact vanish down a black hole; rather, the real
  184.        host T will receive it and attempt to reset the connection.
  185.        This is not a serious obstacle.  Morris found that by
  186.        impersonating a server port on T, and by flooding that port
  187.        with apparent connection requests, he could generate queue
  188.        overflows that would make it likely that the S->T message
  189.        would be lost.  Alternatively, one could wait until T was
  190.        down for routine maintenance or a reboot.
  191.  
  192.        A variant on this TCP sequence number attack, not described
  193.        by Morris, exploits the netstat[8] service.  In this attack,
  194.        the intruder impersonates a host that is down.  If netstat
  195.        is available on the target host, it may supply the necessary
  196.        sequence number information on another port; this eliminates
  197.        all need to guess1.
  198.         __________
  199.  
  200.         1. The netstat protocol is obsolete, but is still present
  201.            on some Internet hosts.  Security concerns were not
  202.  
  203.        Defenses
  204.        Obviously, the key to this attack is the relatively coarse
  205.        rate of change of the initial sequence number variable on
  206.        Berkeley systems.  The TCP specification requires that this
  207.        variable be incremented approximately 250,000 times per
  208.        second; Berkeley is using a much slower rate.  However, the
  209.        critical factor is the granularity, not the average rate.
  210.        The change from an increment of 128 per second in 4.2BSD to
  211.        125,000 per second in 4.3BSD is meaningless, even though the
  212.        latter is within a factor of two of the specified rate.
  213.  
  214.        Let us consider whether a counter that operated at a true
  215.        250,000 hz rate would help.  For simplicity's sake, we will
  216.        ignore the problem of other connections occurring, and only
  217.        consider the fixed rate of change of this counter.
  218.  
  219.        To learn a current sequence number, one must send a SYN
  220.        packet, and receive a response, as follows:
  221.  
  222.                    X->S: SYN(ISNX)
  223.                    S->X: SYN(ISNS),ACK(ISNX)                           (1)
  224.  
  225.        The first spoof packet, which triggers generation of the
  226.        next sequence number, can immediately follow the server's
  227.        response to the probe packet:
  228.  
  229.                    X->S: SYN(ISNX),SRC=T                               (2)
  230.  
  231.        The sequence number ISNS used in the response
  232.  
  233.             S->T: SYN(ISNS),ACK(ISNX)
  234.  
  235.        is uniquely determined by the time between the origination
  236.        of message (0) and the receipt at the server of message (0).
  237.        But this number is precisely the round-trip time between X
  238.        and S.  Thus, if the spoofer can accurately measure (and
  239.        predict) that time, even a 4-second clock will not defeat
  240.        this attack.
  241.  
  242.        How accurately can the trip time be measured?  If we assume
  243.        that stability is good, we can probably bound it within 10
  244.        milliseconds or so.  Clearly, the Internet does not exhibit
  245.        such stability over the long-term[9], but it is often good
  246.        enough over the short term.2 There is thus an uncertainty of
  247.         ____________________________________________________________
  248.  
  249.            behind its elimination.
  250.  
  251.        2500 in the possible value for ISNS.  If each trial takes 5
  252.        seconds, to allow time to re-measure the round-trip time, an
  253.        intruder would have a reasonable likelihood of succeeding in
  254.        7500 seconds, and a near-certainty within a day.  More
  255.        predictable (i.e., higher quality) networks, or more
  256.        accurate measurements, would improve the odds even further
  257.        in the intruder's favor.  Clearly, simply following the
  258.        letter of the TCP specification is not good enough.
  259.  
  260.        We have thus far tacitly assumed that no processing takes
  261.        places on the target host.  In fact, some processing does
  262.        take place when a new request comes in; the amount of
  263.        variability in this processing is critical.  On a 6 MIPS
  264.        machine, one tick -- 4 M-seconds -- is about 25
  265.        instructions.  There is thus considerable sensitivity to the
  266.        exact instruction path followed.  High-priority interrupts,
  267.        or a slightly different TCB allocation sequence, will have a
  268.        comparatively large effect on the actual value of the next
  269.        sequence number.  This randomizing effect is of considerable
  270.        advantage to the target.  It should be noted, though, that
  271.        faster machines are more vulnerable to this attack, since
  272.        the variability of the instruction path will take less real
  273.        time, and hence affect the increment less.  And of course,
  274.        CPU speeds are increasing rapidly.
  275.  
  276.        This suggests another solution to sequence number attacks:
  277.        randomizing the increment.  Care must be taken to use
  278.        sufficient bits; if, say, only the low-order 8 bits were
  279.        picked randomly, and the granularity of the increment was
  280.        coarse, the intruder's work factor is only multiplied by
  281.        256.  A combination of a fine-granularity increment and a
  282.        small random number generator, or just a 32-bit generator,
  283.        is better.  Note, though, that many pseudo-random number
  284.        generators are easily invertible[10].  In fact, given that
  285.        most such generators work via feedback of their output, the
  286.        enemy could simply compute the next "random" number to be
  287.        picked.  Some hybrid techniques have promise -- using a 32-
  288.        bit generator, for example, but only emitting 16 bits of it
  289.        -- but brute-force attacks could succeed at determining the
  290.        seed.  One would need at least 16 bits of random data in
  291.         ____________________________________________________________
  292.  
  293.         2. At the moment, the Internet may not have such stability
  294.            even over the short-term, especially on long-haul
  295.            connections.  It is not comforting to know that the
  296.            security of a network relies on its low quality of
  297.            service.
  298.  
  299.  
  300.        each increment, and perhaps more, to defeat probes from the
  301.        network, but that might leave too few bits to guard against
  302.        a search for the seed.  More research or simulations are
  303.        needed to determine the proper parameters.
  304.  
  305.        Rather than go to such lengths, it is simpler to use a
  306.        cryptographic algorithm (or device) for ISNS generation.
  307.        The Data Encryption Standard[11] (DES) in electronic
  308.        codebook mode[12] is an attractive choice as the ISNS
  309.        source, with a simple counter as input.  Alternatively, DES
  310.        could be used in output feedback mode without an additional
  311.        counter.  Either way, great care must be taken to select the
  312.        key used.  The time-of-day at boot time is not adequate;
  313.        sufficiently good information about reboot times is often
  314.        available to an intruder, thereby permitting a brute-force
  315.        attack.  If, however, the reboot time is encrypted with a
  316.        per-host secret key, the generator cannot be cracked with
  317.        any reasonable effort.
  318.  
  319.        Performance of the initial sequence number generator is not
  320.        a problem.  New sequence numbers are needed only once per
  321.        connection, and even a software implementation of DES will
  322.        suffice. Encryption times of 2.3 milliseconds on a 1 MIPS
  323.        processor have been reported[13].
  324.  
  325.        An additional defense involves good logging and alerting
  326.        mechanisms.  Measurements of the round-trip time --
  327.        essential for attacking RFC-compliant hosts -- would most
  328.        likely be carried out using ICMP Ping messages; a
  329.        "transponder" function could log excessive ping requests.
  330.        Other, perhaps more applicable, timing measurement
  331.        techniques would involve attempted TCP connections; these
  332.        connections are conspicuously short-lived, and may not even
  333.        complete SYN processing.  Similarly, spoofing an active host
  334.        will eventually generate unusual types of RST packets; these
  335.        should not occur often, and should be logged.
  336.  
  337.        3.  THE JOY OF ROUTING
  338.  
  339.        Abuse of the routing mechanisms and protocols is probably
  340.        the simplest protocol-based attack available.  There are a
  341.        variety of ways to do this, depending on the exact routing
  342.        protocols used.  Some of these attacks succeed only if the
  343.        remote host does source address-based authentication; others
  344.        can be used for more powerful attacks.
  345.  
  346.        A number of the attacks described below can also be used to
  347.        accomplish denial of service by confusing the routing tables
  348.        on a host or gateway.  The details are straight-forward
  349.        corollaries of the penetration mechanisms, and will not be
  350.        described further.
  351.  
  352.        3.1  Source Routing
  353.  
  354.        If available, the easiest mechanism to abuse is IP source
  355.        routing.  Assume that the target host uses the reverse of
  356.        the source route provided in a TCP open request for return
  357.        traffic.  Such behavior is utterly reasonable; if the
  358.        originator of the connection wishes to specify a particular
  359.        path for some reason -- say, because the automatic route is
  360.        dead -- replies may not reach the originator if a different
  361.        path is followed.
  362.  
  363.        The attacker can then pick any IP source address desired,
  364.        including that of a trusted machine on the target's local
  365.        network.  Any facilities available to such machines become
  366.        available to the attacker.
  367.  
  368.        Defenses
  369.        It is rather hard to defend against this sort of attack.
  370.        The best idea would be for the gateways into the local net
  371.        to reject external packets that claim to be from the local
  372.        net.  This is less practical than it might seem since some
  373.        Ethernet3 network adapters receive their own transmissions,
  374.        and this feature is relied upon by some higher-level
  375.        protocols.  Furthermore, this solution fails completely if
  376.        an organization has two trusted networks connected via a
  377.        multi-organization backbone.  Other users on the backbone
  378.        may not be trustable to the same extent that local users are
  379.        presumed to be, or perhaps their vulnerability to outside
  380.        attack is higher.  Arguably, such topologies should be
  381.        avoided in any event.
  382.  
  383.        A simpler method might be to reject pre-authorized
  384.        connections if source routing information was present.  This
  385.        presumes that there are few legitimate reasons for using
  386.        this IP option, especially for relatively normal operations.
  387.        A variation on this defense would be to analyze the source
  388.        route and accept it if only trusted gateways were listed;
  389.        that way, the final gateway could be counted on to deliver
  390.        the packet only to the true destination host.  The
  391.        complexity of this idea is probably not worthwhile.
  392.         __________
  393.  
  394.         3. Ethernet is a registered trademark of Xerox Corporation.
  395.  
  396.        Some protocols (i.e., Berkeley's rlogin and rsh) permit
  397.        ordinary users to extend trust to remote host/user
  398.        combinations.  In that case, individual users, rather than
  399.        an entire system, may be targeted by source routing
  400.        attacks.4 Suspicious gateways[14] will not help here, as the
  401.        host being spoofed may not be within the security domain
  402.        protected by the gateways.
  403.  
  404.        3.2  Routing Attacks
  405.  
  406.        The Routing Information Protocol[15] (RIP) is used to
  407.        propagate routing information on local networks, especially
  408.        broadcast media.  Typically, the information received is
  409.        unchecked.  This allows an intruder to send bogus routing
  410.        information to a target host, and to each of the gateways
  411.        along the way, to impersonate a particular host.  The most
  412.        likely attack of this sort would be to claim a route to a
  413.        particular unused host, rather than to a network; this would
  414.        cause all packets destined for that host to be sent to the
  415.        intruder's machine.  (Diverting packets for an entire
  416.        network might be too noticeable; impersonating an idle
  417.        work-station is comparatively risk-free.)  Once this is
  418.        done, protocols that rely on address-based authentication
  419.        are effectively compromised.
  420.  
  421.        This attack can yield more subtle, and more serious,
  422.        benefits to the attacker as well.  Assume that the attacker
  423.        claims a route to an active host or workstation instead.
  424.        All packets for that host will be routed to the intruder's
  425.        machine for inspection and possible alteration.  They are
  426.        then resent, using IP source address routing, to the
  427.        intended destination.  An outsider may thus capture
  428.        passwords and other sensitive data.  This mode of attack is
  429.        unique in that it affects outbound calls as well; thus, a
  430.        user calling out from the targeted host can be tricked into
  431.        divulging a password.  Most of the earlier attacks discussed
  432.        are used to forge a source address; this one is focused on
  433.        the destination address.
  434.        __________
  435.  
  436.         4. Permitting ordinary users to extend trust is probably
  437.            wrong in any event, regardless of abuse of the
  438.            protocols.  But such concerns are beyond the scope of
  439.            this paper.
  440.  
  441.        Defenses
  442.        A RIP attack is somewhat easier to defend against than the
  443.        source-routing attacks, though some defenses are similar.  A
  444.        paranoid gateway -- one that filters packets based on source
  445.        or destination address -- will block any form of host-
  446.        spoofing (including TCP sequence number attacks), since the
  447.        offending packets can never make it through.  But there are
  448.        other ways to deal with RIP problems.
  449.  
  450.        One defense is for RIP to be more skeptical about the routes
  451.        it accepts.  In most environments, there is no good reason
  452.        to accept new routes to your own local networks.  A router
  453.        that makes this check can easily detect intrusion attempts.
  454.        Unfortunately, some implementations rely on hearing their
  455.        own broadcasts to retain their knowledge of directly-
  456.        attached networks.  The idea, presumably, is that they can
  457.        use other networks to route around local outages.  While
  458.        fault-tolerance is in general a good idea, the actual
  459.        utility of this technique is low in many environments
  460.        compared with the risks.
  461.  
  462.        It would be useful to be able to authenticate RIP packets;
  463.        in the absence of inexpensive public-key signature schemes,
  464.        this is difficult for a broadcast protocol.  Even if it were
  465.        done, its utility is limited; a receiver can only
  466.        authenticate the immediate sender, which in turn may have
  467.        been deceived by gateways further upstream.
  468.  
  469.        Even if the local routers don't implement defense
  470.        mechanisms, RIP attacks carry another risk:  the bogus
  471.        routing entries are visible over a wide area.  Any router
  472.        (as opposed to host) that receives such data will
  473.        rebroadcast it; a suspicious administrator almost anywhere
  474.        on the local collection of networks could notice the
  475.        anomaly.  Good log generation would help, but it is hard to
  476.        distinguish a genuine intrusion from the routing instability
  477.        that can accompany a gateway crash.
  478.  
  479.        3.3  Exterior Gateway Protocol
  480.  
  481.        The Exterior Gateway Protocol (EGP)[16] is intended for
  482.        communications between the core gateways and so-called
  483.        exterior gateways.  An exterior gateway, after going through
  484.        a neighbor acquisition protocol, is periodically polled by
  485.        the core; it responds with information about the networks it
  486.        serves.  These networks must all be part of its autonomous
  487.        system.  Similarly, the gateway periodically requests
  488.        routing information from the core gateway.  Data is not
  489.        normally sent except in response to a poll; furthermore,
  490.        since each poll carries a sequence number that must be
  491.        echoed by the response, it is rather difficult for an
  492.        intruder to inject a false route update.  Exterior gateways
  493.        are allowed to send exactly one spontaneous update between
  494.        any two polls; this, too, must carry the sequence number of
  495.        the last poll received.  It is thus comparatively difficult
  496.        to interfere in an on-going EGP conversation.
  497.  
  498.        One possible attack would be to impersonate a second
  499.        exterior gateway for the same autonomous system.  This may
  500.        not succeed, as the core gateways could be equipped with a
  501.        list of legitimate gateways to each autonomous system.  Such
  502.        checks are not currently done, however.  Even if they were,
  503.        they could be authenticated only by source IP address.
  504.  
  505.        A more powerful attack would be to claim reachability for
  506.        some network where the real gateway is down.  That is, if
  507.        gateway G normally handles traffic for network N, and G is
  508.        down, gateway G' could advertise a route to that network.
  509.        This would allow password capture by assorted mechanisms.
  510.        The main defense against this attack is topological (and
  511.        quite restrictive):  exterior gateways must be on the same
  512.        network as the core; thus, the intruder would need to
  513.        subvert not just any host, but an existing gateway or host
  514.        that is directly on the main net.
  515.  
  516.        A sequence number attack, similar to those used against TCP,
  517.        might be attempted; the difficulty here is in predicting
  518.        what numbers the core gateway is using.  In TCP, one can
  519.        establish arbitrary connections to probe for information; in
  520.        EGP, only a few hosts may speak to the core.  (More
  521.        accurately, the core could only speak to a few particular
  522.        hosts, though as noted such checks are not currently
  523.        implemented.)  It may thus be hard to get the raw data
  524.        needed for such an attack.
  525.  
  526.        3.4  The Internet Control Message Protocol
  527.  
  528.        The Internet Control Message Protocol (ICMP)[17] is the
  529.        basic network management tool of the TCP/IP protocol suite.
  530.        It would seem to carry a rich potential for abuse.
  531.        Surprisingly, ICMP attacks are rather difficult; still,
  532.        there are often holes that may be exploited.
  533.  
  534.        The first, and most obvious target, is the ICMP Redirect
  535.        message; it is used by gateways to advise hosts of better
  536.        routes.  As such it can often be abused in the same way that
  537.        RIP can be.  The complication is that a Redirect message
  538.        must be tied to a particular, existing connection; it cannot
  539.        be used to make an unsolicited change to the host's routing
  540.        tables.  Furthermore, Redirects are only applicable within a
  541.        limited topology; they may be sent only from the first
  542.        gateway along the path to the originating host.  A later
  543.        gateway may not advise that host, nor may it use ICMP
  544.        Redirect to control other gateways.
  545.  
  546.        Suppose, though, that an intruder has penetrated a secondary
  547.        gateway available to a target host, but not the primary one.
  548.        (It may suffice to penetrate an ordinary host on the
  549.        target's local network, and have it claim to be a gateway.)
  550.        Assume further that the intruder wishes to set up a false
  551.        route to trusted host T through that compromised secondary
  552.        gateway.  The following sequence may then be followed.  Send
  553.        a false TCP open packet to the target host, claiming to be
  554.        from T.  The target will respond with its own open packet,
  555.        routing it through the secure primary gateway.  While this
  556.        is in transit, a false Redirect may be sent, claiming to be
  557.        from the primary gateway, and referring to the bogus
  558.        connection.  This packet will appear to be a legitimate
  559.        control message; hence the routing change it contains will
  560.        be accepted.  If the target host makes this change to its
  561.        global routing tables, rather than just to the per-
  562.        connection cached route, the intruder may proceed with
  563.        spoofing host T.
  564.  
  565.        Some hosts do not perform enough validity checks on ICMP
  566.        Redirect messages; in such cases, the impact of this attack
  567.        becomes similar to RIP-based attacks.
  568.  
  569.        ICMP may also be used for targeted denial of service
  570.        attacks.  Several of its messages, such as Destination
  571.        Unreachable and Time to Live Exceeded, may be used to reset
  572.        existing connections.  If the intruder knows the local and
  573.        remote port numbers of a TCP connection, an ICMP packet
  574.        aimed at that connection may be forged5.  Such information
  575.        is sometimes available through the netstat service.
  576.  
  577.        A more global denial of service attack can be launched by
  578.        sending a fraudulent Subnet Mask Reply message.  Some hosts
  579.        will accept any such message, whether they have sent a query
  580.        or not; a false one could effectively block all
  581.        communications with the target host.
  582.        __________
  583.  
  584.         5. In fact, such programs are available today; they are
  585.            used as administrative tools to reset hung TCP
  586.            connections.
  587.  
  588.        Defenses
  589.        Most ICMP attacks are easy to defend against with just a
  590.        modicum of paranoia.  If a host is careful about checking
  591.        that a message really does refer to a particular connection,
  592.        most such attacks will not succeed.  In the case of TCP,
  593.        this includes verifying that the ICMP packet contains a
  594.        plausible sequence number in the returned-packet portion.
  595.        These checks are less applicable to UDP, though.
  596.  
  597.        A defense against Redirect attacks merits additional
  598.        attention, since such attacks can be more serious.
  599.        Probably, the best option is to restrict route changes to
  600.        the specified connection; the global routing table should
  601.        not be modified in response to ICMP Redirect messages6.
  602.  
  603.        Finally, it is worth considering whether ICMP Redirects are
  604.        even useful in today's environment.  They are only usable on
  605.        local networks with more than one gateway to the outside
  606.        world.  But it is comparatively easy to maintain complete
  607.        and correct local routing information.  Redirect messages
  608.        would be most useful from the core gateways to local
  609.        exterior gateways, as that would allow such local gateways
  610.        to have less than complete knowledge of the Internet; this
  611.        use is disallowed, however.
  612.  
  613.        Subnet Mask attacks can be blocked if the Reply packet is
  614.        honored only at the appropriate time.  In general, a host
  615.        wants to see such a message only at boot time, and only if
  616.        it had issued a query; a stale reply, or an unsolicited
  617.        reply, should be rejected out of hand.  There is little
  618.        defense against a forged reply to a genuine Subnet Mask
  619.        query, as a host that has sent such a query typically has
  620.        few resources with which to validate the response.  If the
  621.        genuine response is not blocked by the intruder, though, the
  622.        target will receive multiple replies; a check to ensure that
  623.        all replies agree would guard against administrative errors
  624.        as well.
  625.        __________
  626.  
  627.         6. This has other benefits as well, especially in
  628.            environments where ICMP-initiated route changes are not
  629.            timed out.  The author has seen situations where RIP
  630.            instability following a gateway crash has led to
  631.            erroneous ICMP Redirect messages.  These had the effect
  632.            of permanently corrupting the routing tables on other
  633.            hosts.
  634.  
  635.        4.  THE "AUTHENTICATION" SERVER
  636.  
  637.        As an alternative to address-based authentication, some
  638.        implementations use the Authentication Server[18].  A server
  639.        that wishes to know the identity of its client may contact
  640.        the client host's Authentication Server7, and ask it for
  641.        information about the user owning a particular connection.
  642.        This method is inherently more secure than simple address-
  643.        based authentication, as it uses a second TCP connection not
  644.        under control of the attacker.  It thus can defeat sequence
  645.        number attacks and source routing attacks.  There are
  646.        certain risks, however.
  647.  
  648.        The first, and most obvious, is that not all hosts are
  649.        competent to run authentication servers.  If the client host
  650.        is not secure, it does not matter who the user is claimed to
  651.        be; the answer cannot be trusted.  Second, the
  652.        authentication message itself can be compromised by routing
  653.        table attacks.  If RIP has been used to alter the target's
  654.        idea of how to reach some host, the authentication query
  655.        will rely on the same altered routing data.  Finally, if the
  656.        target host is down, a variant on the TCP sequence number
  657.        attack may be used; after the server sends out a TCP open
  658.        request to the presumed authentication server, the attacker
  659.        can complete the open sequence and send a false reply.  If
  660.        the target runs a netstat server, this is even easier; as
  661.        noted, netstat will often supply the necessary sequence
  662.        numbers with no need to guess.
  663.  
  664.        A less-obvious risk is that a fake authentication server can
  665.        always reply "no".  This constitutes a denial of service
  666.        attack.
  667.  
  668.        Defenses
  669.        A server that wishes to rely on another host's idea of a
  670.        user should use a more secure means of validation, such as
  671.        the Needham-Schroeder algorithm[20][21][22].  TCP by itself
  672.        is inadequate.
  673.        __________
  674.  
  675.         7. The Internet Activities Board does not currently
  676.            recommend the Authentication Server for
  677.            implementation[19].  However, the decision was not made
  678.            because of security problems[5].
  679.  
  680.        5.  HERE BE DRAGONS
  681.  
  682.        Some protocols, while not inherently flawed, are
  683.        nevertheless susceptible to abuse.  A wise implementor would
  684.        do well to take these problems into account when providing
  685.        the service.
  686.  
  687.        5.1  The "Finger" Service
  688.  
  689.        Many systems implement a finger service[23].  This server
  690.        will display useful information about users, such as their
  691.        full names, phone numbers, office numbers, etc.
  692.        Unfortunately, such data provides useful grist for the mill
  693.        of a password cracker.[24] By running such a service, a
  694.        system administrator is giving away this data.
  695.  
  696.        5.2  Electronic Mail
  697.  
  698.        Electronic mail is probably the most valuable service on the
  699.        Internet.  Nevertheless, it is quite vulnerable to misuse.
  700.        As normally implemented[25][26], the mail server provides no
  701.        authentication mechanisms.  This leaves the door wide open
  702.        to faked messages.  RFC 822 does support an Encrypted header
  703.        line, but this is not widely used.  (However, see RFC
  704.        1040[27] for a discussion of a proposed new encryption
  705.        standard for electronic mail.)
  706.  
  707.        5.2.1  The Post Office Protocol
  708.  
  709.        The The Post Office Protocol (POP)[28] allows a remote user
  710.        to retrieve mail stored on a central server machine.
  711.        Authentication is by means of a single command containing
  712.        both the user name and the password.  However, combining the
  713.        two on a single command mandates the use of conventional
  714.        passwords.  And such passwords are becoming less popular;
  715.        they are too vulnerable to wire-tappers, intentional or
  716.        accidental disclosure, etc.
  717.  
  718.        As an alternative, many sites are adopting "one-time
  719.        passwords"8.  With one-time passwords, the host and some
  720.        device available to the user share a cryptographic key.  The
  721.        host issues a random challenge; both sides encrypt this
  722.        number, and the user transmits it back to the host.  Since
  723.        __________
  724.  
  725.         8. One-time passwords were apparently first used for
  726.            military IFF (Identification Friend or Foe) systems[29].
  727.  
  728.        the challenge is random, the reply is unique to that
  729.        session, thereby defeating eavesdroppers.  And since the
  730.        user does not know the key -- it is irretrievably stored in
  731.        the device -- the password cannot be given away without
  732.        depriving the user of the ability to log in.
  733.  
  734.        The newest version of POP[30] has split the user name and
  735.        password into two commands, which is useful.  However, it
  736.        also defines an optional mechanism for preauthenticated
  737.        connections, typically using Berkeley's mechanisms.
  738.        Commendably, the security risks of this variant are
  739.        mentioned explicitly in the document.
  740.  
  741.        5.2.2  PCMAIL
  742.  
  743.        The PCMAIL protocol[31] uses authentication mechanisms
  744.        similar to those in POP2.  In one major respect, PCMAIL is
  745.        more dangerous:  it supports a password-change command.
  746.        This request requires that both the old and new passwords be
  747.        transmitted unencrypted.
  748.  
  749.        5.3  The Domain Name System
  750.  
  751.        The Domain Name System (DNS)[32][33] provides for a
  752.        distributed database mapping host names to IP addresses.  An
  753.        intruder who interferes with the proper operation of the DNS
  754.        can mount a variety of attacks, including denial of service
  755.        and password collection.  There are a number of
  756.        vulnerabilities.
  757.  
  758.        In some resolver implementations, it is possible to mount a
  759.        sequence number attack against a particular user.  When the
  760.        target user attempts to connect to a remote machine, an
  761.        attacker can generate a domain server response to the
  762.        target's query.  This requires knowing both the UDP port
  763.        used by the client's resolver and the DNS sequence number
  764.        used for the query.  The latter is often quite easy to
  765.        obtain, though, since some resolvers always start their
  766.        sequence numbers with 0.  And the former may be obtainable
  767.        via netstat or some analogous host command.
  768.  
  769.        A combined attack on the domain system and the routing
  770.        mechanisms can be catastrophic.  The intruder can intercept
  771.        virtually all requests to translate names to IP addresses,
  772.        and supply the address of a subverted machine instead; this
  773.        would allow the intruder to spy on all traffic, and build a
  774.        nice collection of passwords if desired.
  775.  
  776.        For this reason, domain servers are high-value targets; a
  777.        sufficiently determined attacker might find it useful to
  778.        take over a server by other means, including subverting the
  779.        machine one is on, or even physically interfering with its
  780.        link to the Internet.  There is no network defense against
  781.        the former, which suggests that domain servers should only
  782.        run on highly secure machines; the latter issue may be
  783.        addressed by using authentication techniques on domain
  784.        server responses.
  785.  
  786.        The DNS, even when functioning correctly, can be used for
  787.        some types of spying.  The normal mode of operation of the
  788.        DNS is to make specific queries, and receive specific
  789.        responses.  However, a zone transfer (AXFR) request exists
  790.        that can be used to download an entire section of the
  791.        database; by applying this recursively, a complete map of
  792.        the name space can be produced.  Such a database represents
  793.        a potential security risk; if, for example, an intruder
  794.        knows that a particular brand of host or operating system
  795.        has a particular vulnerability, that database can be
  796.        consulted to find all such targets.  Other uses for such a
  797.        database include espionage; the number and type of machines
  798.        in a particular organization, for example, can give away
  799.        valuable data about the size of the organization, and hence
  800.        the resources committed to a particular project.
  801.  
  802.        Fortunately, the domain system includes an error code for
  803.        "refused"; an administrative prohibition against such zone
  804.        transfers is explicitly recognized as a legitimate reason
  805.        for refusal.  This code should be employed for zone transfer
  806.        requests from any host not known to be a legitimate
  807.        secondary server.  Unfortunately, there is no authentication
  808.        mechanism provided in the AXFR request; source address
  809.        authentication is the best that can be done.
  810.  
  811.        Recently, a compatible authentication extension to the DNS
  812.        has been devised at M.I.T.  The Hesiod name server[34] uses
  813.        Kerberos[35] tickets to authenticate queries and responses.
  814.        The additional information section of the query carries an
  815.        encrypted ticket, which includes a session key; this key,
  816.        known only to Hesiod and the client, is used to compute a
  817.        cryptographic checksum of the both the query and the
  818.        response.  These checksums are also sent in the additional
  819.        information field.
  820.  
  821. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  822.  
  823. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  824.  
  825.                               NIA074 / File 03
  826.  
  827.                Security Problems in the TCP/IP Protocol Suite
  828.  
  829.                               Part II of II
  830.  
  831.                               S.M. Bellovin
  832.  
  833.                           AT&T Bell Laboratories
  834.  
  835.  
  836.        5.4  The File Transfer Protocol
  837.  
  838.        The File Transfer Protocol (FTP)[36] itself is not flawed.
  839.        However, a few aspects of the implementation merit some
  840.        care.
  841.  
  842.        5.4.1  FTP Authentication
  843.  
  844.        FTP relies on a login and password combination for
  845.        authentication.  As noted, simple passwords are increasingly
  846.        seen as inadequate; more and more sites are adopting one-
  847.        time passwords.  Nothing in the FTP specification precludes
  848.        such an authentication method.  It is vital, however, that
  849.        the "331" response to a USER subcommand be displayed to
  850.        the user; this message would presumably contain the
  851.        challenge.  An FTP implementation that concealed this
  852.        response could not be used in this mode; if such
  853.        implementations are (or become) common, it may be necessary
  854.        to use a new reply code to indicate that the user must see
  855.        the content of the challenge.
  856.  
  857.        5.4.2  Anonymous FTP
  858.  
  859.        A second problem area is "anonymous FTP".  While not
  860.        required by the FTP specification, anonymous FTP is a
  861.        treasured part of the oral tradition of the Internet.
  862.        Nevertheless, it should be implemented with care.
  863.  
  864.        One part of the problem is the implementation technique
  865.        chosen.  Some implementations of FTP require creation of a
  866.        partial replica of the directory tree; care must be taken to
  867.        ensure that these files are not subject to compromise.  Nor
  868.        should they contain any sensitive information, such as
  869.        encrypted passwords.
  870.  
  871.        The second problem is that anonymous FTP is truly anonymous;
  872.        there is no record of who has requested what information.
  873.        Mail-based servers will provide that data; they also provide
  874.        useful techniques for load-limiting9, background transfers,
  875.        etc.
  876.  
  877.        5.5  Simple Network Management Protocol
  878.  
  879.        The Simple Network Management Protocol (SNMP)[37] has
  880.        recently been defined to aid in network management.
  881.        Clearly, access to such a resource must be heavily
  882.        protected.  The RFC states this, but also allows for a null
  883.         __________
  884.  
  885.         9. Recently, a host was temporarily rendered unusable by
  886.            massive numbers of FTP requests for a popular technical
  887.            report.  If this were deliberate, it would be considered
  888.            a successful denial of service attack.
  889.  
  890.        authentication service; this is a bad idea.  Even a "read-
  891.        only" mode is dangerous; it may expose the target host to
  892.        netstat-type attacks if the particular Management
  893.        Information Base (MIB)[38] used includes sequence numbers.
  894.        (The current standardized version does not; however, the MIB
  895.        is explicitly declared to be extensible.)
  896.  
  897.        5.6  Remote Booting
  898.  
  899.        Two sets of protocols are used today to boot diskless
  900.        workstations and gateways, Reverse ARP (RARP)[39] with the
  901.        Trivial File Transfer Protocol (TFTP)[40] and BOOTP[41] with
  902.        TFTP.  A system being booted is a tempting target; if one
  903.        can subvert the boot process, a new kernel with altered
  904.        protection mechanisms can be substituted.  RARP-based
  905.        booting is riskier because it relies on Ethernet-like
  906.        networks, with all the vulnerabilities adhering thereto.
  907.        One can achieve a modest improvement in security by ensuring
  908.        that the booting machine uses a random number for its UDP
  909.        source port; otherwise, an attacker can impersonate the
  910.        server and send false DATA packets.
  911.  
  912.        BOOTP adds an additional layer of security by including a
  913.        4-byte random transaction id.  This prevents an attacker
  914.        from generating false replies to a workstation known to be
  915.        rebooting.  It is vital that these numbers indeed be random;
  916.        this can be difficult in a system that is freshly powered
  917.        up, and hence with little or no unpredictable state.  Care
  918.        should be taken when booting through gateways; the more
  919.        networks traversed, the greater the opportunity for
  920.        impersonation.
  921.  
  922.        The greatest measure of protection is that normally, the
  923.        attacker has only a single chance; a system being booted
  924.        does not stay in that state.  If, however, communications
  925.        between the client and the standard server may be
  926.        interrupted, larger-scale attacks may be mounted.
  927.  
  928.        6.  TRIVIAL ATTACKS
  929.  
  930.        A few attacks are almost too trivial to mention;
  931.        nevertheless, completeness demands that they at least be
  932.        noted.
  933.  
  934.        6.1  Vulnerability of the Local Network
  935.  
  936.        Some local-area networks, notably the Ethernet networks, are
  937.        extremely vulnerable to eavesdropping and host-spoofing.  If
  938.        such networks are used, physical access must be strictly
  939.        controlled.  It is also unwise to trust any hosts on such
  940.        networks if any machine on the network is accessible to
  941.        untrusted personnel, unless authentication servers are used.
  942.  
  943.        If the local network uses the Address Resolution Protocol
  944.        (ARP)[42] more subtle forms of host-spoofing are possible.
  945.        In particular, it becomes trivial to intercept, modify, and
  946.        forward packets, rather than just taking over the host's
  947.        role or simply spying on all traffic.
  948.  
  949.        It is possible to launch denial of service attacks by
  950.        triggering broadcast storms.  There are a variety of ways to
  951.        do this; it is quite easy if most or all of the hosts on the
  952.        network are acting as gateways.  The attacker can broadcast
  953.        a packet destined for a non-existent IP address.  Each host,
  954.        upon receiving it, will attempt to forward it to the proper
  955.        destination.  This alone will represent a significant amount
  956.        of traffic, as each host will generate a broadcast ARP query
  957.        for the destination.  The attacker can follow up by
  958.        broadcasting an ARP reply claiming that the broadcast
  959.        Ethernet address is the proper way to reach that
  960.        destination.  Each suspectible host will then not only
  961.        resend the bogus packet, it will also receive many more
  962.        copies of it from the other suspectible hosts on the
  963.        network.
  964.  
  965.        6.2  The Trivial File Transfer Protocol
  966.  
  967.        TFTP[40] permits file transfers without any attempt at
  968.        authentication.  Thus, any publicly-readable file in the
  969.        entire universe is accessible.  It is the responsibility of
  970.        the implementor and/or the system administrator to make that
  971.        universe as small as possible.
  972.  
  973.        6.3  Reserved Ports
  974.  
  975.        Berkeley-derived TCPs and UDPs have the notion of a
  976.        "privileged port".  That is, port numbers lower than 1024
  977.        may only be allocated to privileged processes.  This
  978.        restriction is used as part of the authentication mechanism.
  979.        However, neither the TCP nor the UDP specifications contain
  980.        any such concept, nor is such a concept even meaningful on a
  981.        single-user computer.  Administrators should never rely on
  982.        the Berkeley authentication schemes when talking to such
  983.        machines.
  984.  
  985.        7.  COMPREHENSIVE DEFENSES
  986.  
  987.        Thus far, we have described defenses against a variety of
  988.        individual attacks.  Several techniques are broad-spectrum
  989.        defenses; they may be employed to guard against not only
  990.        these attacks, but many others as well.
  991.  
  992.        7.1  Authentication
  993.  
  994.        Many of the intrusions described above succeed only because
  995.        the target host uses the IP source address for
  996.        authentication, and assumes it to be genuine.
  997.        Unfortunately, there are sufficiently many ways to spoof
  998.        this address that such techniques are all but worthless.
  999.        Put another way, source address authentication is the
  1000.        equivalent of a file cabinet secured with an S100 lock; it
  1001.        may reduce the temptation level for more-or-less honest
  1002.        passers-by, but will do little or nothing to deter anyone
  1003.        even slightly serious about gaining entry.
  1004.  
  1005.        Some form of cryptographic authentication is needed.  There
  1006.        are several possible approaches.  Perhaps the best-known is
  1007.        the Needham-Schroeder algorithm[20][21][22].  It relies on
  1008.        each host sharing a key with an authentication server; a
  1009.        host wishing to establish a connection obtains a session key
  1010.        from the authentication server and passes a sealed version
  1011.        along to the destination.  At the conclusion of the dialog,
  1012.        each side is convinced of the identity of the other.
  1013.        Versions of the algorithm exist for both private-key and
  1014.        public-key[43] cryptosystems.
  1015.  
  1016.        How do these schemes fit together with TCP/IP?  One answer
  1017.        is obvious:  with them, preauthenticated connections can be
  1018.        implemented safely; without them, they are quite risky.  A
  1019.        second answer is that the DNS provides an ideal base for
  1020.        authentication systems, as it already incorporates the
  1021.        necessary name structure, redundancy, etc.  To be sure, key
  1022.        distribution responses must be authenticated and/or
  1023.        encrypted; as noted, the former seems to be necessary in any
  1024.        event.
  1025.  
  1026.        In some environments, care must be taken to use the session
  1027.        key to encrypt the entire conversation; if this is not done,
  1028.        an attacker can take over a connection via the mechanisms
  1029.        described earlier.
  1030.  
  1031.        7.2  Encryption
  1032.  
  1033.        Suitable encryption can defend against most of the attacks
  1034.        outlined above.  But encryption devices are expensive, often
  1035.        slow, hard to administer, and uncommon in the civilian
  1036.        sector.  There are different ways to apply encryption; each
  1037.        has its strengths and weaknesses.  A comprehensive treatment
  1038.        of encryption is beyond the scope of this paper; interested
  1039.        readers should consult Voydock and Kent[44] or Davies and
  1040.        Price[45].
  1041.  
  1042.        Link-level encryption -- encrypting each packet as it leaves
  1043.        the host computer -- is an excellent method of guarding
  1044.        against disclosure of information.  It also works well
  1045.        against physical intrusions; an attacker who tapped in to an
  1046.        Ethernet cable, for example, would not be able to inject
  1047.        spurious packets.  Similarly, an intruder who cut the line
  1048.        to a name server would not be able to impersonate it.  The
  1049.        number of entities that share a given key determines the
  1050.        security of the network; typically, a key distribution
  1051.        center will allocate keys to each pair of communicating
  1052.        hosts.
  1053.  
  1054.        Link-level encryption has some weaknesses, however.
  1055.        Broadcast packets are difficult to secure; in the absence of
  1056.        fast public-key cryptosystems, the ability to decode an
  1057.        encrypted broadcast implies the ability to send such a
  1058.        broadcast, impersonating any host on the network.
  1059.        Furthermore, link-level encryption, by definition, is not
  1060.        end-to-end; security of a conversation across gateways
  1061.        implies trust in the gateways and assurance that the full
  1062.        concatenated internet is similarly protected.  (This latter
  1063.        constraint may be enforced administratively, as is done in
  1064.        the military sector.)  If such constraints are not met,
  1065.        tactics such as source-routing attacks or RIP-spoofing may
  1066.        be employed.  Paranoid gateways can be deployed at the
  1067.        entrance to security domains; these might, for example,
  1068.        block incoming RIP packets or source-routed packets.
  1069.  
  1070.        Many portions of the DARPA Internet employ forms of link
  1071.        encryption.  All Defense Data Network (DDN) IMP-to-IMP
  1072.        trunks use DES encryption, even for non-classified traffic;
  1073.        classified lines use more secure cryptosystems[46].  These,
  1074.        however, are point-to-point lines, which are comparatively
  1075.        easy to protect.
  1076.  
  1077.        A multi-point link encryption device for TCP/IP is the
  1078.        Blacker Front End (BFE)[47].  The BFE looks to the host like
  1079.        an X.25 DDN interface, and sits between the host and the
  1080.        actual DDN line.  When it receives a call request packet
  1081.        specifying a new destination, it contacts an Access Control
  1082.        Center (ACC) for permission, and a Key Distribution Center
  1083.        (KDC) for cryptographic keys.  If the local host is denied
  1084.        permission to talk to the remote host, an appropriate
  1085.        diagnostic code is returned.  A special "Emergency Mode"
  1086.        is available for communications to a restricted set of
  1087.        destinations at times when the link to the KDC or ACC is not
  1088.        working.
  1089.  
  1090.        The permission-checking can, to some extent, protect against
  1091.        the DNS attacks described earlier.  Even if a host has been
  1092.        mislead about the proper IP address for a particular
  1093.        destination, the BFE will ensure that a totally unauthorized
  1094.        host does not receive sensitive data.  That is, assume that
  1095.        a host wishes to send Top Secret data to some host foo.  A
  1096.        DNS attack might mislead the host into connecting to
  1097.        penetrated host 4.0.0.4, rather than 1.0.0.1.  If 4.0.0.4 is
  1098.        not cleared for Top Secret material, or is not allowed
  1099.        communications with the local host, the connection attempt
  1100.        will fail.  To be sure, a denial of service attack has taken
  1101.        place; this, in the military world, is far less serious than
  1102.        information loss.
  1103.  
  1104.        The BFE also translates the original ("Red") IP address to
  1105.        an encrypted ("Black") address, using a translation table
  1106.        supplied by the ACC.  This is done to foil traffic analysis
  1107.        techniques, the bane of all multi-point link encryption
  1108.        schemes.
  1109.  
  1110.        End-to-end encryption, above the TCP level, may be used to
  1111.        secure any conversation, regardless of the number of hops or
  1112.        the quality of the links.  This is probably appropriate for
  1113.        centralized network management applications, or other
  1114.        point-to-point transfers.  Key distribution and management
  1115.        is a greater problem, since there are more pairs of
  1116.        correspondents involved.  Furthermore, since encryption and
  1117.        decryption are done before initiation or after termination
  1118.        of the TCP processing, host-level software must arrange for
  1119.        the translation; this implies extra overhead for each such
  1120.        conversation10.
  1121.  
  1122.        End-to-end encryption is vulnerable to denial of service
  1123.        attacks, since fraudulently-injected packets can pass the
  1124.        __________
  1125.  
  1126.        10. We are assuming that TCP is handled by the host, and not
  1127.            by a front-end processor.
  1128.  
  1129.        TCP checksum tests and make it to the application.  A
  1130.        combination of end-to-end encryption and link-level
  1131.        encryption can be employed to guard against this.  An
  1132.        intriguing alternative would be to encrypt the data portion
  1133.        of the TCP segment, but not the header; the TCP checksum
  1134.        would be calculated on the cleartext, and hence would detect
  1135.        spurious packets.  Unfortunately, such a change would be
  1136.        incompatible with other implementations of TCP, and could
  1137.        not be done transparently at application level.
  1138.  
  1139.        Regardless of the method used, a major benefit of encrypted
  1140.        communications is the implied authentication they provide.
  1141.        If one assumes that the key distribution center is secure,
  1142.        and the key distribution protocols are adequate, the very
  1143.        ability to communicate carries with it a strong assurance
  1144.        that one can trust the source host's IP address for
  1145.        identification.
  1146.  
  1147.        This implied authentication can be especially important in
  1148.        high-threat situations.  A routing attack can be used to
  1149.        "take over" an existing connection; the intruder can
  1150.        effectively cut the connection at the subverted machine,
  1151.        send dangerous commands to the far end, and all the while
  1152.        translate sequence numbers on packets passed through so as
  1153.        to disguise the intrusion.
  1154.  
  1155.        It should be noted, of course, that any of these encryption
  1156.        schemes provide privacy.  Often that is the primary goal of
  1157.        such systems.
  1158.  
  1159.        7.3  Trusted Systems
  1160.  
  1161.        Given that TCP/IP is a Defense Department protocol suite, it
  1162.        is worth asking to what extent the Orange Book[48] and Red
  1163.        Book[49] criteria would protect a host from the attacks
  1164.        described above.  That is, suppose that a target host (and
  1165.        the gateways!) were rated B1 or higher.  Could these attacks
  1166.        succeed?  The answer is a complex one, and depends on the
  1167.        assumptions we are willing to make.  In general, hosts and
  1168.        routers rated at B2 or higher are immune to the attacks
  1169.        described here, while C2-level systems are susceptible.
  1170.        B1-level systems are vulnerable to some of these attacks,
  1171.        but not all.
  1172.  
  1173.        In order to understand how TCP/IP is used in secure
  1174.        environments, a brief tutorial on the military security
  1175.        model is necessary.  All objects in the computer system,
  1176.        such as files or network channels, and all data exported
  1177.        from them, must have a label indicating the sensitivity of
  1178.        the information in them.  This label includes hierarchical
  1179.        components (i.e., Confidential, Secret, and Top Secret) and
  1180.        non-hierarchical components.  Subjects -- i.e., processes
  1181.        within the computer system -- are similarly labeled.  A
  1182.        subject may read an object if its label has a higher or
  1183.        equal hierarchical level and if all of the object's non-
  1184.        hierarchical components are included in the subject's label.
  1185.        In other words, the process must have sufficient clearance
  1186.        for the information in a file.  Similarly, a subject may
  1187.        write to an object if the object has a higher or equal level
  1188.        and the object's non-hierarchical components include all of
  1189.        those in the subject's level.  That is, the sensitivity
  1190.        level of the file must be at least as high as that of the
  1191.        process.  If it were not, a program with a high clearance
  1192.        could write classified data to a file that is readable by a
  1193.        process with a low security clearance.
  1194.  
  1195.        A corollary to this is that for read/write access to any
  1196.        file, its security label must exactly match that of the
  1197.        process.  The same applies to any form of bidirectional
  1198.        interprocess communication (i.e., a TCP virtual circuit):
  1199.        both ends must have identical labels.
  1200.  
  1201.        We can now see how to apply this model to the TCP/IP
  1202.        protocol suite.  When a process creates a TCP connection,
  1203.        that connection is given the process's label.  This label is
  1204.        encoded in the IP security option.  The remote TCP must
  1205.        ensure that the label on received packets matches that of
  1206.        the receiving process.  Servers awaiting connections may be
  1207.        eligible to run at multiple levels; when the connection is
  1208.        instantiated, however, the process must be forced to the
  1209.        level of the connection request packet.
  1210.  
  1211.        IP also makes use of the security option[50].  A packet may
  1212.        not be sent over a link with a lower clearance level.  If a
  1213.        link is rated for Secret traffic, it may carry Unclassified
  1214.        or Confidential traffic, but it may not carry Top Secret
  1215.        data.  Thus, the security option constrains routing
  1216.        decisions.  The security level of a link depends on its
  1217.        inherent characteristics, the strength of any encryption
  1218.        algorithms used, the security levels of the hosts on that
  1219.        network, and even the location of the facility.  For
  1220.        example, an Ethernet cable located in a submarine is much
  1221.        more secure than if the same cable were running through a
  1222.        dormitory room in a university.
  1223.  
  1224.        Several points follow from these constraints.  First, TCP-
  1225.        level attacks can only achieve penetration at the level of
  1226.        the attacker.  That is, an attacker at the Unclassified
  1227.        level could only achieve Unclassified privileges on the
  1228.        target system, regardless of which network attack was
  1229.        used11.  Incoming packets with an invalid security marking
  1230.        would be rejected by the gateways.
  1231.  
  1232.        Attacks based on any form of source-address authentication
  1233.        should be rejected as well.  The Orange Book requires that
  1234.        systems provide secure means of identification and
  1235.        authentication; as we have shown, simple reliance on the IP
  1236.        address is not adequate.  As of the B1 level, authentication
  1237.        information must be protected by cryptographic checksums
  1238.        when transmitted from machine to machine12.
  1239.  
  1240.        The authentication server is still problematic; it can be
  1241.        spoofed by a sequence number attack, especially if netstat
  1242.        is available.  This sort of attack could easily be combined
  1243.        with source routing for full interactive access.  Again,
  1244.        cryptographic checksums would add significant strength.
  1245.  
  1246.        B1-level systems are not automatically immune from routing
  1247.        attacks; RIP-spoofing could corrupt their routing tables
  1248.        just as easily.  As seen, that would allow an intruder to
  1249.        capture passwords, perhaps even some used on other trusted
  1250.        systems.  To be sure, the initial penetration is still
  1251.        restricted by the security labelling, but that may not block
  1252.        future logins captured by these means.
  1253.  
  1254.        Routing attacks can also be used for denial of service.
  1255.        Specifically, if the route to a secure destination is
  1256.        changed to require use of an insecure link, the two hosts
  1257.        will not be able to communicate.  This change would probably
  1258.        be detected rather quickly, though, since the gateway that
  1259.        noticed the misrouted packet would flag it as a security
  1260.        problem.
  1261.  
  1262.        At the B2 level, secure transmission of routing control
  1263.        information is required.  Similar requirements apply to
  1264.        other network control information, such as ICMP packets.
  1265.  
  1266.        __________
  1267.  
  1268.        11. We are assuming, of course, that the penetrated system
  1269.            does not have bugs of its own that would allow further
  1270.            access.
  1271.  
  1272.        12. More precisely, user identification information must be
  1273.            protected to an equal extent with data sensitivity
  1274.            labels.  Under certain circumstances, described in the
  1275.            Red Book, cryptographic checks may be omitted.  In
  1276.            general, though, they are required.
  1277.  
  1278.        Several attacks we have described rely on data derived from
  1279.        "information servers", such as netstat and finger.  While
  1280.        these, if carefully done, may not represent a direct
  1281.        penetration threat in the civilian sense, they are often
  1282.        seen to represent a covert channel that may be used to leak
  1283.        information.  Thus, many B-division systems do not implement
  1284.        such servers.
  1285.  
  1286.        In a practical sense, some of the technical features we have
  1287.        described may not apply in the military world.
  1288.        Administrative rules[51] tend to prohibit risky sorts of
  1289.        interconnections; uncleared personnel are not likely to have
  1290.        even indirect access to systems containing Top Secret data.
  1291.        Such rules are, most likely, an accurate commentary on
  1292.        anyone's ability to validate any computer system of non-
  1293.        trivial size.
  1294.  
  1295.         8.  CONCLUSIONS
  1296.  
  1297.        Several points are immediately obvious from this analysis.
  1298.        The first, surely, is that in general, relying on the IP
  1299.        source address for authentication is extremely dangerous13.
  1300.        Fortunately, the Internet community is starting to accept
  1301.        this on more than an intellectual level.  The Berkeley
  1302.        manuals[3] have always stated that the authentication
  1303.        protocol was very weak, but it is only recently that serious
  1304.        attempts (i.e., Kerberos[35] and SunOS 4.0's DES
  1305.        authentication mode[52]) have been made to correct the
  1306.        problem.  Kerberos and SunOS 4.0 have their weaknesses, but
  1307.        both are far better than their predecessor.  More recently,
  1308.        an extension to the Network Time Protocol (NTP)[53] has been
  1309.        proposed that includes a cryptographic checksum[54].
  1310.  
  1311.        A second broad class of problems is sequence number attacks.
  1312.        If a protocol depends on sequence numbers -- and most do --
  1313.        it is vital that they be chosen unpredictably.  It is worth
  1314.        considerable effort to ensure that these numbers are not
  1315.        knowable even to other users on the same system.
  1316.        __________
  1317.  
  1318.        13. There are some exceptions to this rule.  If the entire
  1319.            network, and all of its components (hosts, gateways,
  1320.            cables, etc.) are physically protected, and if all of
  1321.            the operating systems are sufficiently secure, there
  1322.            would seem to be little risk.
  1323.  
  1324.        We may generalize this by by stating that hosts should not
  1325.        give away knowledge gratuitously.  A finger server, for
  1326.        example, would be much safer if it only supplied information
  1327.        about a known user, rather than supplying information about
  1328.        everyone logged on.  Even then, some censorship might be
  1329.        appropriate; a refusal to supply the last login date and
  1330.        other sensitive information would be appropriate if the
  1331.        account was not used recently.  (Never-used accounts often
  1332.        have simple default passwords.  Infrequently-used accounts
  1333.        are often set up less carefully by the owner.)  We have also
  1334.        seen how netstat may be abused; indeed, the combination of
  1335.        netstat with the authentication server is the single
  1336.        strongest attack using the standardized Internet protocols.
  1337.  
  1338.        Finally, network control mechanisms are dangerous, and must
  1339.        be carefully guarded.  Static routes are not feasible in a
  1340.        large-scale network, but intelligent use of default routes
  1341.        and verifiable point-to-point routing protocols (i.e., EGP)
  1342.        are far less vulnerable than broadcast-based routing.
  1343.  
  1344.        9.  ACKNOWLEDGEMENTS
  1345.  
  1346.        Dave Presotto, Bob Gilligan, Gene Tsudik, and especially
  1347.        Deborah Estrin made a number of useful suggestions and
  1348.        corrections to a draft of this paper.
  1349.  
  1350.                                 REFERENCES
  1351.  
  1352.         1. E.J. Feinler, O.J. Jacobsen, M.K. Stahl, C.A. Ward, eds.
  1353.            DDN Protocol Handbook.  DDN Network Information Center,
  1354.            SRI International, 1985.
  1355.  
  1356.         2. Comer, D.  Internetworking with TCP/IP: Principles,
  1357.            Protocols, and Architecture.  Prentice Hall, 1988
  1358.  
  1359.         3. Computer Systems Research Group.  UNIX User's Reference
  1360.            Manual (URM).  4.3 Berkeley Software Distribution
  1361.            Virtual Vax-11 Version.  Computer Science Division,
  1362.            Department of Electrical Engineering and Computer
  1363.            Science, University of California, Berkeley.  1986.
  1364.  
  1365.         4. Spafford, E.H.  The Internet Worm Program: An Analysis.
  1366.            Purdue Technical Report CSD-TR-823, Department of
  1367.            Computer Sciences Purdue University, West Lafayette, IN.
  1368.            1988
  1369.  
  1370.         5. Seeley, D.  A Tour of the Worm.  Department of Computer
  1371.            Science, University of Utah.  1988.
  1372.  
  1373.         6. Eichin, M. and Rochlis, J.  With Microscope and
  1374.            Tweezers:  An Analysis of the Internet Virus of November
  1375.            1988.  Massachussetts Institute of Technology, 1988.
  1376.  
  1377.         7. Morris, R.T.  1985.  A Weakness in the 4.2BSD UNIX
  1378.            TCP/IP Software.  Computing Science Technical Report No.
  1379.            117, AT&T Bell Laboratories, Murray Hill, New Jersey.
  1380.  
  1381.         8. Reynolds, J.K., and J. Postel.  Assigned Numbers.  RFC
  1382.            990, 1986
  1383.  
  1384.         9. Mills, D.L.  Internet Delay Experiments, RFC 889, 1983.
  1385.  
  1386.        10. Blum, M. and Micali, S.  "How to Generate
  1387.            Cryptographically Strong Sequences of Pseudo-Random
  1388.            Bits".  SIAM J Computing, vol. 13, no. 4, pp. 850-864,
  1389.            Nov. 1984.
  1390.  
  1391.        11. US Federal Information Processing Standards Publication
  1392.            (FIPS PUB) 46, Data Encryption Standard, 15 January
  1393.            1977.
  1394.  
  1395.        12. US Federal Information Processing Standards Publication
  1396.            (FIPS PUB) 81.  DES Modes of Operation, 2 December 1980.
  1397.  
  1398.        13. Bishop, M.  An Application of a Fast Data Encryption
  1399.            Standard Implementation.  Technical Report PCS-TR88-138,
  1400.            Department of Mathematics and Computer Science,
  1401.            Dartmouth College, Hanover, NH.  1988.
  1402.  
  1403.        14. Mogul, J.  "Simple and Flexible Datagram Access
  1404.            Controls for UNIX-based Gateways", Proceedings, Summer
  1405.            USENIX, 1989, Baltimore, Maryland (to appear).
  1406.  
  1407.        15. Hedrick, C.  Routing Information Protocol.  RFC 1058,
  1408.            1988.
  1409.  
  1410.        16. Mills, D.L.  Exterior Gateway Protocol Formal
  1411.            Specification.  RFC 904, 1984.
  1412.  
  1413.        17. Postel, J.  Internet Control Message Protocol.  RFC 792,
  1414.            1981.
  1415.  
  1416.        18. St. Johns, M.  Authentication Server.  RFC 931, 1985.
  1417.  
  1418.        19. Defense Advanced Research Projects Agency, Internet
  1419.            Activities Board.  IAB Official Protocol Standards.  RFC
  1420.            1083, 1988
  1421.  
  1422.        19. Postel, J.  Private communication.  1989.
  1423.  
  1424.        20. Needham, R.M. and Schroeder, M.D.  "Using Encryption
  1425.            for Authentication in Large Networks of Computers".
  1426.            Communications of the ACM, vol. 21, no. 12, pp. 993-999,
  1427.            December 1978.
  1428.  
  1429.        21. Denning, D.E. and Sacco, G.M.  "Timestamps in Key
  1430.            Distribution Protocols", Communications of the ACM,
  1431.            vol. 24, no. 8, pp. 533-536, August 1981.
  1432.  
  1433.        22. Needham, R.M. and Schroeder, M.D.  "Authentication
  1434.            Revisited", Operating Systems Review, vol. 21, no. 1,
  1435.            p. 7, January 1987.
  1436.  
  1437.        23. Harrenstien, K.  NAME/FINGER Protocol, RFC 742, 1977.
  1438.  
  1439.        24. Grampp, F.T. and Morris, R.H.  "UNIX Operating System
  1440.            Security", AT&T Bell Laboratories Technical Journal,
  1441.            vol. 63, no. 8, part 2, October, 1984.
  1442.  
  1443.        25. Crocker, D.  Standard for the Format of ARPA-Internet
  1444.            Text Messages.  RFC 822, 1982.
  1445.  
  1446.        26. Postel, J.  Simple Mail Transfer Protocol.  RFC 821,
  1447.            1982.
  1448.  
  1449.        27. Linn, J.  Privacy Enhancement for Internet Electronic
  1450.            Mail: Part I: Message Encipherment and Authentication
  1451.            Procedures.  RFC 1040, 1988.
  1452.  
  1453.        28. Butler, M.; Postel, J.B.; Chase, D.; Goldberger, J.;
  1454.            Reynolds, J.K.  Post Office Protocol - Version 2.  RFC
  1455.            937, 1985.
  1456.  
  1457.        29. Diffie, W.  "The First Ten Years of Public Key
  1458.            Cryptography".  Proc. IEEE, vol. 76, no. 5, pp. 560-
  1459.            577, May 1988.
  1460.  
  1461.        30. Rose, M.  Post Office Protocol - Version 3.  RFC 1081,
  1462.            1988
  1463.  
  1464.        31. Lambert, M.L.  PCMAIL: A Distributed Mail System for
  1465.            Personal Computers.  RFC 1056, 1988
  1466.  
  1467.        32. Mockapetris, P.  Domain Names - Concepts and Facilities.
  1468.            RFC 1034, 1987.
  1469.  
  1470.        33. Mockapetris, P.  Domain Names - Implementations and
  1471.            Specifications.  RFC 1035, 1987.
  1472.  
  1473.        34. Dyer, S.P.  "Hesiod", Proceedings, Winter USENIX,
  1474.            1988, Dallas, Texas.
  1475.  
  1476.        35. Steiner, J.G, Neuman, C., Schiller, J.I.  "Kerberos: An
  1477.            Authentication Service for Open Network Systems",
  1478.            Proceedings, Winter USENIX, 1988, Dallas, Texas.
  1479.  
  1480.        36. Postel, J.  File Transfer Protocol.  RFC 959, 1985.
  1481.  
  1482.        37. Case, J., Fedor, M., Schoffstall, J., and Davin, J.  A
  1483.            Simple Network Management Protocol.  RFC 1067, 1988.
  1484.  
  1485.        38. McCloghrie, K. and Rose, M.  Management Information Base
  1486.            for Network Management of TCP/IP-based Internets.  RFC
  1487.            1066.  1988.
  1488.  
  1489.        39. Finlayson, R.; Mann, T.; Mogul, J.; Theimer, M.  Reverse
  1490.            Address Resolution Protocol.  RFC 903, 1984.
  1491.  
  1492.        40. Sollins, K.R.  The TFTP Protocol (Revision 2).  RFC 783,
  1493.            1981.
  1494.  
  1495.        41. Croft, W.J.; Gilmore, J.  Bootstrap Protocol.  RFC 951,
  1496.            1985.
  1497.  
  1498.        42. Plummer, D.C.  An Ethernet Address Resolution Protocol.
  1499.            RFC 826, 1982.
  1500.  
  1501.        43. Diffie, W. and Hellman, M.E.  "New Directions in
  1502.            Cryptography."  IEEE Transactions on Information
  1503.            Theory, vol. IT-22, no. 6, pp. 644-654.
  1504.  
  1505.        44. Voydock, V.L. and Kent, S.T.  "Security Mechanisms in
  1506.            High-Level Network Protocols".  ACM Computer Surveys,
  1507.            vol. 15, no. 2, pp. 135-171, June 1983.
  1508.  
  1509.        45. Davies, D.W. and Price, W.L.  Security for Computer
  1510.            Networks: An Introduction to Data Security in
  1511.            Teleprocessing and Electronic Funds Transfer.  Wiley.
  1512.            1984.
  1513.  
  1514.        46. Defense Communications Agency.  Defense Data Network
  1515.            Subscriber Security Guide.  1983.
  1516.  
  1517.        47. "Blacker Front End Interface Control Document", in DDN
  1518.            Protocol Handbook.  DDN Network Information Center, SRI
  1519.            International, vol. 1, 1985.
  1520.  
  1521.        48. DoD Computer Security Center.  DoD Trusted Computer
  1522.            System Evaluation Criteria, 1983, CSC-STD-001-83.
  1523.  
  1524.        49. National Computer Security Center.  Trusted Network
  1525.            Interpretation of the Trusted Computer System Evaluation
  1526.            Criteria.  NCSC-TG-005, Version 1, July 31, 1987.
  1527.  
  1528.        50. St. Johns, M.  Draft Revised IP Security Option.  RFC
  1529.            1038, 1988.
  1530.  
  1531.        51. DoD Computer Security Center.  Technical Rationale
  1532.            Behind CSC-STD-003-85: Computer Security Requirements,
  1533.            CSC-STD-004-83, 1983.
  1534.  
  1535.        52. Taylor, B. and Goldberg, D.  "Secure Networking in the
  1536.            Sun Environment".  Proceedings, Summer USENIX, 1986,
  1537.            Atlanta, Georgia.
  1538.  
  1539.        53. Mills, D.L.  Network Time Protocol (Version 1)
  1540.            Specification and Implementation.  RFC 1059, 1988.
  1541.  
  1542.        54. Mills, D.L.  Mailing list message
  1543.            <8901192354.aa03743@Huey.UDEL.EDU>, January 19, 1989.
  1544.  
  1545. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  1546.  
  1547.  
  1548.  
  1549.                 The Design of a Secure Internet Gateway
  1550.  
  1551.                              Bill Cheswick
  1552.                            10 September 1991
  1553.                          TECHNICAL MEMORANDUM
  1554.  
  1555. Abstract
  1556. --------
  1557. The Internet supports a vast and growing community of computer users
  1558. around the world.
  1559. Unfortunately, this network can provide anonymous access to this
  1560. community by unscrupulous, careless, or dangerous people.
  1561. On any given Internet there is a certain percentage of poorly-maintained
  1562. systems.
  1563. AT&T has a large internal
  1564. Internet that we wish to protect from outside attacks, while providing
  1565. useful services between the two.
  1566.     
  1567. This paper describes our Internet gateway.  It is an application-level
  1568. gateway that passes mail and many of the common Internet services
  1569. between our internal machines and the Internet.  This is accomplished
  1570. without IP connectivity using a pair of machines: a trusted internal
  1571. machine and an untrusted external gateway.  These are connected by a private
  1572. link.  The internal machine provides a few carefully-guarded services
  1573. to the external gateway.  This configuration helps protect the internal
  1574. internet even if the external machine is fully compromised.
  1575.  
  1576. This is a slightly-updated version of the paper presented at the 1990
  1577. summer Usenix at Anaheim.
  1578.  
  1579. Introduction
  1580. ------------
  1581. The design of a Corporate gateway to the Internet must deal with the
  1582. classical tradeoff between security and convenience.  Most institutions
  1583. opt for convenience and use a simple router between their internal
  1584. internets and the rest of the world.  This is dangerous.
  1585. Strangers on the Internet can reach and test every internal machine.
  1586. With workstations sitting on many desks, system administration is
  1587. often decentralized and neglected.  Passwords are weak or missing.
  1588. A professor or researcher often may install the operating system
  1589. and forget it, leaving well-known security holes uncorrected.
  1590. For example, a sweep of 1,300 machines inside Bell Labs around
  1591. the time of the Internet Worm found over 300 that had at least one of
  1592. several known security holes.
  1593.  
  1594. When we first obtained a connection to the ARPAnet, Dave Presotto
  1595. configured our gateway machine (named arpa) as an application-level
  1596. gateway.  For two years this machine was the sole official link
  1597. to the Internet for AT&T.  Until its disconnection in 1989, this VAX 750 handled
  1598. all the Internet mail traffic and other services for the company.
  1599. Arpa had Ethernet connections to both the inside and outside Internets, just
  1600. like a router.  It could also make and accept calls on our corporate Datakit
  1601. network.
  1602.  
  1603. Dave took a number of steps to make our gateway more secure.
  1604. He turned off IP forwarding in the kernel so packets could not
  1605. travel between the Internets.  He installed a kernel modification
  1606. that limited TCP connections from arpa to the inside network to smtp, uucp,
  1607. named, and hostname ports.  And he rejected the sendmail mailer as too
  1608. complicated and dangerous:  the Upas [cite upas] mailer was installed
  1609. in its place. We removed a number of non-essential daemons, including the
  1610. finger server.
  1611.  
  1612. To give insiders access to the Internet,  a gate service
  1613. was installed on arpa.  Insiders could call this service and
  1614. supply an Internet address.  The gate connected to a socket of a remote
  1615. Internet host and then copied bytes between the two connections.  It was
  1616. easy to provide atelnet, a version of telnet that used the gate service.
  1617. Aftp supplied FTP services:  it was the standard ftp modified so both the
  1618. command and data connections were initiated from the inside.  (The standard
  1619. ftp would have tried to make the data connection from arpa to the inside, a
  1620. connection prohibited by arpa's kernel.)
  1621.  
  1622. This configuration successfully resisted the Internet worm.  We ran neither
  1623. sendmail nor fingerd, the two programs exploited by the worm. [cite seeley] The
  1624. internal internet was spared the infection.  (Actually, there was a second,
  1625. unguarded IP link to the Outside.  We got lucky:  only a few machines
  1626. at the other end knew of the link, and their machines were shut down
  1627. before the worm could creep across.)
  1628.  
  1629. Had arpa been infected, the worm could have reached the inside
  1630. machines.  The initial smtp sendmail connection was permitted,
  1631. and the worm's second connection would have been initiated from the
  1632. inside target machine into arpa, the permitted direction.
  1633.  
  1634.  
  1635. The new gateway
  1636. --- --- -------
  1637. All of arpa's protection has, by design, left the internal AT&T machines
  1638. untested---a sort of crunchy shell around a soft, chewy center.
  1639. We run security scans on internal machines and bother system administrators
  1640. when holes are found.  Still, it would be nice to have a gateway that is
  1641. demonstrably secure to protect the internal machines.  For peace of mind,
  1642. the gateway design should not rely on vendors' code more than absolutely
  1643. necessary.  We would like the internal machines protected even if an invader
  1644. breaks into the gateway machine, becomes root, and creates and runs a new
  1645. kernel.
  1646.  
  1647. We had to replace arpa.  The VAX 750 ran with typical load averages of seven
  1648. to twelve jobs throughout the day.  When the load average hit about
  1649. fifteen, the old Datakit driver expired, wedging the Datakit ports and
  1650. requiring a reboot.
  1651.  
  1652. A new machine gave the opportunity for a clean start. 
  1653. We could re-think the security arrangements to improve on arpa's shortcomings.
  1654.  
  1655. Our new gateway machine, named inet, is a MIPS M/120 running RISC/OS,
  1656. a System V implementation with Berkeley enhancements.  Various daemons and
  1657. critical programs have been obtained from other sources, checked,
  1658. and installed.
  1659.  
  1660. We store nothing vital or secret on inet, since we assume that it may be
  1661. defeated in unforeseen ways.  It does not run uucp---systems files and dialers
  1662. could fall into the wrong hands.  There are few system administration accounts,
  1663. and user accounts are discouraged.
  1664. Inet is not used for other tasks.
  1665. It is backed up regularly, and scanned for unauthorized changes and
  1666. common system administration mistakes.
  1667. Though we don't trust inet, we protect it as much as we can.
  1668.  
  1669. Inet has a single Ethernet port which is connected to a router
  1670. on JVNCnet, our external regional network.  It also has a connection to Datakit.
  1671. We have configured our Datakit controller to force all connections
  1672. from inet to a single internal machine, named r70.
  1673. R70 can redial, or splice connections to other internal machines.  R70
  1674. provides a limited set of services to inet for reaching internal machines.
  1675. The list of services are:
  1676. 1. connection to an approved machine's smtp port,
  1677. 2. connection to a login or trusted-login Datakit destination
  1678.    after passing a challenge-response test, and
  1679. 3. connection to a logging service.
  1680.  
  1681. The key to the arrangement is a restricted channel from inet
  1682. to r70.  This private channel was easily constructed using stock features of
  1683. our research Datakit controller.  Other connection schemes could be implemented
  1684. using a simple multiplexed protocol over some back-to-back connection
  1685. between the machines, or a simple two-machine Ethernet would suffice.  
  1686. If the last approach is used with TCP, the internal
  1687. machine must supply differing TCP services to its two Ethernet
  1688. interfaces.  (I am not sure this is possible with stock commercial TCP
  1689. software. It wouldn't be too hard to modify inetd to do this.)
  1690.  
  1691. These functions do not load the internal machine too much;
  1692. it could have other uses like uucp, mail, or even normal user jobs.
  1693. But the services it provides the external machine are the key
  1694. to security, and must be protected well.
  1695.  
  1696.  
  1697. Outbound services
  1698. -------- --------
  1699. It is quite easy to implement most outbound services to the Internet.
  1700. Inet has a small program, named proxy (a descendant of arpa's
  1701. gate), that makes calls to the Internet on behalf of an inside machine
  1702. and relays bytes between the inside Datakit connection and the outside
  1703. Internet TCP connection.  Proxy can also listen to a non-privileged socket
  1704. and report connections to an inside process.  Several outbound services
  1705. are implemented using proxy, and more are easy to create.
  1706. In all cases, it appears to the remote Internet hosts that our gateway
  1707. machine is making the calls.
  1708.  
  1709. %%%% picture of a proxy call
  1710.  
  1711. Inet may be reached over the Datakit.
  1712. But how do internal machines reach inet over the Ethernet?
  1713. R70 responds to two IP addresses: its own, and an internal IP address for
  1714. inet.  (Dave Presotto implemented this after a trivial change to the
  1715. Tenth Edition Research Unix connection server. [cite connection]
  1716. Calls to certain TCP ports on this internal IP address invoke dcon, a
  1717. program that simply relays the bytes between the TCP port
  1718. and Datakit connections on inet.
  1719.  
  1720. I have replaced the  old aftp and atelnet with ptelnet and pftp.  They work
  1721. in the same manner, but the new routines call a portable implementation of
  1722. ipcopen, a piece of the connection server.  Ipcopen hides the details of
  1723. a connection (TCP sockets or Datakit), simplifying the application program.
  1724. For example:
  1725. ptelnet tcp!toucan
  1726. connects to machine toucan on our internet, and
  1727. ptelnet proxy!ernie.berkeley.edu
  1728. connects to ernie.berkeley.edu on the external Internet.
  1729. proxy! is the default.
  1730. The ipcopen implementation is not flawless:
  1731. some socket features such as out-of-band data and the urgent pointer
  1732. are missing because they are not supported by Datakit.
  1733. Ptelnet was stripped down to avoid these features.
  1734.  
  1735. %%%% figure of a proxy
  1736.  
  1737. Pftp provides FTP access in a similar manner.  It is an updated
  1738. version of aftp from arpa.  The ipcopen routines allow it to work over Datakit.
  1739.  
  1740. The proxy software is available
  1741. by anonymous FTP from toucan.zoo.att.com.  The file is proxy.tar.Z.
  1742.  
  1743. % figure of pftp and ftp function
  1744.  
  1745. Outgoing mail is sent to inet via smtp over either Datakit or the
  1746. internal Internet.  It is stored and forwarded from there.  Upas
  1747. performs the mail gateway functions.
  1748.  
  1749.  
  1750.                     $ telnet research.att.com
  1751.                     Trying...
  1752.                     Connected to research.att.com.
  1753.                     Escape character is '^]'.
  1754.                     
  1755.                     
  1756.                     RISC/os (inet)
  1757.                     
  1758.                     login: guard
  1759.                     RISC/os (UMIPS) 4.0 inet
  1760.                     Copyright 1986, MIPS Computer Systems
  1761.                     All Rights Reserved
  1762.                     Security Authentication check
  1763.                     
  1764.                     login: ches
  1765.                     Enter response code for 90902479: 818b71fe
  1766.                     
  1767.                     Destination please: coma
  1768.                     OKYou have mail.
  1769.                     coma=; date
  1770.                     Tue Nov 14 10:52:37 EST 1989
  1771.                     coma=; 
  1772.                     Eof
  1773.                     Connection closed by foreign host.
  1774.                     $ 
  1775.  
  1776.                  *A connection session through the guard.*
  1777.  
  1778.  
  1779. Inbound services
  1780. ------- --------
  1781. We provide incoming login and mail service.  For incoming file transfer,
  1782. inet provides an anonymous FTP service.
  1783.  
  1784. We do not trust our passwords to the Internet:  it is too easy to eavesdrop
  1785. or steal packets.  See [cite smb] for a discussion of these security problems.
  1786. Login service requires a hand-held authenticator (HHA).  These are
  1787. calculator-sized devices that contain DES encryption and a manually-loaded
  1788. 64-bit key.  They cost about $60.
  1789.  
  1790. Inbound login service is provided through an authentication manager on
  1791. r70.  A session is shown in figure [ref  connect].
  1792. To connect, the following sequence occurs:
  1793. 1.  The Internet caller uses telnet to connect to research.att.com
  1794.         inet via telnet.  The login name is tt guard.
  1795. 2.  The tt guard login connects to the authentication manager on r70
  1796.         over the Datakit.  It spends the rest of the connection
  1797.         relaying bytes between the two connections.
  1798. 3.  The authentication manager on r70 requests a login name.
  1799. 4.  R70 sends a random challenge number, which the caller supplies.
  1800. 5.  The user enters the challenge into his HHA.
  1801. 6   The HHA encrypts the challenge using a pre-loaded DES key,
  1802.         and displays the response.
  1803. 7.  The user types the response.  He has three tries to
  1804.         answer a challenge correctly, and is disconnected if he fails.
  1805. 8.  The authorization manager prompts for a Datakit destination.
  1806. 9.  When the user enters the destination, the manager sends a redial
  1807.     request to the Datakit controller with the given destination and
  1808.         a service of `dcon'.  For machines that trust r70, the `dcon'
  1809.         service bypasses further logins and avoids further passwords.
  1810. 10. The redial request transfers the call, switching r70 out of
  1811.         the connection.  Connections for a TCP host are handed to rlogin.
  1812.  
  1813. Users may wish to trust the gate machine and so avoid typing any passwords
  1814. over the internet.  TCP callers can put r70-mhbb.research.att.com in their
  1815. .rhosts file.  For Datakit connections using the standard DKHOST software,
  1816. they can log in through the guard once using ptelnet, and then request the
  1817. destination area/exchange/host.authorize.t.
  1818. This will connect them to their own machine's authorization server,
  1819. which will prompt them for a login and password.  Obviously, this
  1820. should be done from a secure terminal, and not from out on the
  1821. Internet.
  1822. (Both of these practices are dangerous.  Do you really want to trust
  1823. r70?  It is probably safer than entering passwords on some alien
  1824. workstation out on the Internet.  We frown on user-level authentication in
  1825. general, preferring to have the system administrator make and support these
  1826. judgements.)
  1827.  
  1828. Each user requires a DES key, and keys have an expiration date.
  1829. The key file is stored on r70 in a file readable only by root.
  1830. This is unfortunate, and the file will probably move into an authentication
  1831. manager somewhere.
  1832.  
  1833. Inbound mail is delivered directly to inet.
  1834. Inet checks the destination.  If it is a trusted machine (i.e. its
  1835. smtp is trusted), a connection request is sent to r70.  If not,
  1836. the mail is relayed through an accessible internal machine.
  1837. R70 will permit connections only to trusted smtp implementations.
  1838. The list is short because most internal machines run sendmail.
  1839.  
  1840. % so why do we need inet?  Why not a Cisco with inet on the inside?
  1841.  
  1842. %%      The restricted list of known 112 smtps should be justified both from
  1843. %%    a security standpoint and a practicality one -- some smtps (i.e.,
  1844. %%    sendmail on sunos) have security bugs.  Thus, the techniques used
  1845. %%    to let logins through are not acceptable for mail.
  1846.  
  1847. % what about network file system connections into inet?  Another hole?
  1848.  
  1849. %%    You may want to have two public ftp directories, though I'm not certain
  1850. %%      exactly how to set things up this way without giving out inet logins.
  1851. %%    'pub' is mode 555 or 755 not owned by ftp; it's used for 'blessed'
  1852. %%    outgoing packages that we advertise for pickup.  'incoming' is mode 333
  1853. %%    or 733 -- i.e., not readable from the outside.  If you know the
  1854. %%    file name, you can pick it up, but you can't snoop for stuff.  This
  1855. %%    avoids things like you putting a file in there for me, but a cracker
  1856. %%    plants a horse before I get to it.  I've recommended a similar scheme
  1857. %%    to the Comp Centers; they like it so far.
  1858.  
  1859. %%    How does ftpd work without running as root?  On Berkeley systems
  1860. %%    at least, it can't function without being root when talking to
  1861. %%    a client that doesn't generate PORT commands.
  1862.  
  1863.  
  1864. Protecting INET
  1865. ---------- ----
  1866. The preceding precautions might imply that we expect our gateway
  1867. to be compromised at some point.  In fact, we are taking great pains
  1868. to protect the machine, including the usual good system administration
  1869. steps needed to secure any Unix system [cite ritchie]: directory and file
  1870. permissions are checked, backups performed regularly, etc.
  1871.  
  1872. We have taken some steps to avoid denial-of-service attacks.
  1873. For example, the logs, the spool directory, and the publically-accessible
  1874. FTP directory are each on separate file systems.  If a stranger fills
  1875. the public FTP directory, there is still room for the logs.
  1876.  
  1877. Here are some other steps taken:
  1878.  
  1879. 1.  All the important executable files are periodically
  1880.         checksummed and checked for changes.
  1881. 2.  Most user accounts do not have passwords to be checked.  They
  1882.         obtain permission to login based on the source of the call.
  1883. 3.  User accounts are discouraged.
  1884. 4.  Non-essential network daemons have been removed:  we don't need
  1885.         to trust them.
  1886. 5.  Inetd(8) handles all network connections.  Certain modifications
  1887.         allow telnetd, smtpd, and ftpd to run with reduced permissions:
  1888.         [cite ritchie] inetd handles the privileged stuff.
  1889. 6.  There is extensive logging of network activity, including connection
  1890.         and login attempts.  Logs are stored forever on a WORM-based backup
  1891.         system.
  1892. 7.  Since the network daemons are so important to the security of the machine,
  1893.         we obtained the latest BSD versions and examined, modified, and
  1894.         installed them.
  1895.  
  1896.  
  1897. Gateway alternatives
  1898. ------- ------------
  1899. There are several much simpler alternatives for an Internet gateway.
  1900. The simplest is a router, which just lets the packets through.  Some
  1901. routers, like Cisco's, provide packet filtering that can block various
  1902. types of access to an institution.
  1903.  
  1904. We did not choose the router.  Though the filtering is quite good, it's
  1905. not clear whether a clever worm could get through the permitted ports.
  1906. Can we trust the router?
  1907. If telnet access is allowed from the outside, inside machines are exposed
  1908. to password-guessing attacks.  If telnet access is not allowed, an alternative
  1909. is needed anyway, requiring additional provisions.  The router does not
  1910. provide logging to detect invasion attempts.  And mail gating must be
  1911. provided by a machine somewhere:  it is unreasonable to expect each internal
  1912. machine to be configured to handle all the varieties of external mail
  1913. addressing.
  1914.  
  1915. Many Internet sites use a gateway machine like a Sun.  These machines forward
  1916. IP packets in both directions, and provide a mail gateway service.
  1917. The packet flow is still dangerous, though filtering is available.
  1918. Many internal machines may trust the gate machine, leaving them further
  1919. exposed if the gate machine is compromised.
  1920.  
  1921.  
  1922. Performance
  1923. -----------
  1924. The mail throughput of the new gateway has been gratifying,
  1925. though a VAX 750 is an easy act to follow. In many cases,
  1926. we have had replies to cross-country mail return in less than a minute.
  1927. It sometimes seems that the mail must have bounced.  Inet has little
  1928. else to do, and a MIPS M/120 is a fast machine.
  1929.  
  1930. Pftp transfers are fastest over Datakit, since they avoid the
  1931. dcon gateway in r70.  File transfers range from 17 to 44 Kb/sec.
  1932. TCP transfers through r70 run at 9 to 16 Kb/sec.  By comparison,
  1933. thinspace ftp on inet runs at about 60--90 Kb/sec.
  1934. Clearly, security has its costs.  But these are top speeds.  The limiting
  1935. factor is often the external net or host.  The throughput seems adequate, and
  1936. there have been no complaints.
  1937.  
  1938. % ftp> get /vmunix /dev/null
  1939. % 200 PORT command okay.
  1940. % 150 Opening data connection for /vmunix (192.20.225.2,2242) (707584 bytes).
  1941. % 226 Transfer complete.
  1942. % 707584 bytes received in 15.834 seconds (43.64 Kbytes/s)
  1943.  
  1944. %     19505 bytes from pilot.njin.net:
  1945. %          dk to inet:   1.1 sec 17.3 K/sec
  1946. %          TCP to inet:  1.4 sec 13.6 K/sec
  1947. %        dk to att-in: 13 sec   1.5 K/sec
  1948. %     17403 bytes from uunet.uu.net:
  1949. %          dk to inet:   .84 sec 20.2 K/sec
  1950. %          TCP to inet:  1.9 sec  8.9 K/sec
  1951. %        dk to att-in: 9.2 sec  1.8 K/sec
  1952.  
  1953.  
  1954. Conclusions
  1955. -----------
  1956. The new gateway achieves a useful balance of utility and
  1957. security.  Most internal users seem to be happy with pftp and
  1958. ptelnet.  Some have asked for talk, resolver service and other UDP-based
  1959. protocols.  These could be provided with non-proxy services
  1960. on inet accessible through Datakit.  Steve Bellovin has cooked up a
  1961. scheme to support X through the gateway.  The security implications are
  1962. frightening.
  1963.  
  1964. There are certainly limits to our security.  If r70 and inet are subverted,
  1965. the inside machines could be attacked.
  1966.  
  1967. Insiders can easily import trouble such as Trojan horses or programs
  1968. infected with viruses.  Our best defense is continued scanning of internal
  1969. machines for security holes in case such a program gets loose.
  1970.  
  1971. There is now a second AT&T internet gateway [cite horton].
  1972. Its configuration is based on this work.
  1973. These two front doors provide reasonable security to an isolated
  1974. internal internet.  But AT&T is a large company, so we keep a constant watch to
  1975. assure that no other links are made to the external Internet.  A locked front
  1976. door is useless if the back wall of the house is missing.
  1977.  
  1978. The incoming guarded telnet service is not perfect.  The remote telnet
  1979. may be insecure, and the TCP connection itself could be stolen after
  1980. login is complete.  Most internal AT&T machines do not accept r70's
  1981. judgement that the user is valid, and require their own login passwords.
  1982. These passwords travel over the Internet in the clear.
  1983.  
  1984. Our solution does have some drawbacks.
  1985. We rely on two machines and Datakit to keep things working.  This
  1986. yields three points of failure, while the simpler approaches have
  1987. (in some sense) only one point of failure.  The use of TCP-level gateways
  1988. does lower throughput.  Though most users seem to be content with the
  1989. pftp response, it would be nice to speed it up some.  The uptime of this
  1990. service is measured in months, and the mail transit time in seconds or minutes.
  1991.  
  1992.         This paper is not an invitation to come
  1993.     test the security of our gateway.
  1994.     It is management's policy to call the
  1995.     authorities when intruders are detected.
  1996.  
  1997.  
  1998. Acknowledgements
  1999. ----------------
  2000. Many people have contributed to the support of
  2001. these gateways.  Steve Bellovin did most of the initial work to get arpa
  2002. talking to the ARPAnet and Datakit.
  2003. Dave Presotto has supplied much of the software and most
  2004. of the paranoia to provide a secure gateway.  Howard Trickey implemented
  2005. earlier versions of ptelnet and pftp.
  2006. Dennis Ritchie has kept a watchful eye and stepped in when things broke.
  2007. Steve Bellovin and others have provided numerous suggestions and warnings
  2008. on various networking and security topics.
  2009. Jim McKie ported many useful Research Unix [cite V10] functions and the
  2010. INCON Datakit driver to our MIPS computers, making life much easier for me.
  2011.  
  2012.  
  2013. 1.  The box is completely reset.
  2014.     Enter a code digit and press "Enter":
  2015.  
  2016.                 digit   &       hexadecimal encryption  &     "error"
  2017.                 0       & yes                           &       yes
  2018.                 1       & yes                           &       no
  2019.                 4       & no                            &       yes
  2020.                 5       & no                            &       no
  2021.  
  2022.         Hexadecimal encryption provides slightly higher security,
  2023.                 but it is easy to mistake "6" and "b".  In decimal
  2024.                 mode, the hexadecimal characters "a"--"c" and "d"--"f"
  2025.                 are mapped to "2" and "3" respectively.  The guard software
  2026.                 accepts either answer.  The error mode displays "error"
  2027.         if an invalid PIN is entered.  Five invalid entries will
  2028.                 reset the box to .  If "error" is off, the SNK
  2029.                 provides an invalid encryption.  We use mode 4.
  2030. 2.  Enter the DES key.  The key consists of eight
  2031.     8-bit bytes typed in octal.  Press "Enter."
  2032. 3.  Enters a 4 to 16-digit PIN, followed by "Enter."
  2033. 4.  Re-enter the PIN, followed by "Enter."
  2034. 5.  Enter the PIN followed by "Enter".
  2035. 6.  Enter the challenge, followed by "Enter".
  2036.                 The SNK displays the response.
  2037.  
  2038. Programming the Hand Held Authenticator
  2039. ----------- --- ---- ---- -------------
  2040. We use the Securenet Key SNK-4.  It is available from
  2041.  
  2042.     Digital Pathways
  2043.     221 West Grand Avenue
  2044.     Montvale NJ  07645
  2045.  
  2046. It costs $60 in unit quantities.  Its major competitor is the
  2047. SecureId card.  The latter uses a time-based algorithm to generate
  2048. the key and requires substantial and expensive software in the
  2049. host.  The SNK-4 needs a small program that uses the standard
  2050. encrypt function.
  2051.  
  2052. We program the SNK-4s by hand, though a PC-based system is
  2053. available as well.  Figure [ref programming] details the programming
  2054. steps.
  2055.  
  2056. The SNK shuts off automatically after 30 seconds.  Press
  2057. "On" to restart.
  2058.  
  2059. We have found that the battery runs down in the SNK if the
  2060. "On" button is pressed continuously, say, in luggage.  The
  2061. bumps around the "On" switch don't protect the switch well
  2062. enough.  We suggest storing the box in the original packing
  2063. material.
  2064.  
  2065.  
  2066. Bibliography
  2067. ------------
  2068. upas
  2069.     David Presotto.
  2070.         Upas - a simpler approach to network mail.
  2071.         USENIX Summer Conference Proceedings, pps.533-538, June 1985.
  2072. seeley
  2073.     Donn Seeley.
  2074.         A Tour of the Worm.
  2075.     USENIX Winter Conference Proceedings, Jan. 1989.
  2076. connection
  2077.     David Presotto and Dennis Ritchie.
  2078.         Interprocess Communication in the Ninth Edition UNIX System.
  2079.     Unix Programmer's Manual, Tenth Edition.
  2080.     A. G. Hume and M. D. McIlroy, Editors.
  2081.         AT&T Bell Laboratories, Murray Hill, NJ. 1990.
  2082. smb
  2083.     Bellovin, S.M.
  2084.         Security Problems in the TCP/IP Protocol Suite.
  2085.     Computer Communications Review, Vol. 9, No. 2; April, 1989,
  2086.         pps.32-48.
  2087. ritchie
  2088.     Ritchie, Dennis M.
  2089.         On the Security of UNIX.
  2090.     Unix Programmer's Manual, Tenth Edition.
  2091.     A. G. Hume and M. D. McIlroy, Editors.
  2092.         AT&T Bell Laboratories, Murray Hill, NJ. 1990.
  2093. V10
  2094.     Unix Programmer's Manual, Tenth Edition, Volumes One and Two.
  2095.     A. G. Hume and M. D. McIlroy, Editors.
  2096.         AT&T Bell Laboratories, Murray Hill, NJ. 1990.
  2097. horton
  2098.     Horton, Mark R.
  2099.         Charter for an Electronic Communication Gateway Service - Issue 1.
  2100.         %MRH CB 45264 4276 1E-271
  2101.     45264-881003.01IM.
  2102. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  2103.  
  2104.                             NIA074 / File 5
  2105.  
  2106.             Notes on Centigram Voice Mail system Consoles
  2107.  
  2108. Proper entry procedure, possible design flaw and serious security
  2109. bug:
  2110.  
  2111.      Due to, I assume, more efficient task-handling and the
  2112. desire for a more 'Unix-like' environment, the developers at
  2113. Centigram needed for certain key functions to be available at all
  2114. times.  For instance, the ^Z key acts as the 'escape' key (these
  2115. can be remapped, if desired).  When necessary for some
  2116. applications to use an 'escape' procedure, pressing this key can,
  2117. in at leas cases, cause a drop to shell, or /cmds/qnxsh
  2118. (possibly /cmds/sh, as well, but I'm used to seeing qnxsh).  If
  2119. this escape procedure were invoked during, say, /cmds/login, the
  2120. resulting drop to shell would by-pass the 'Enter Passcode:'
  2121. message.  And it does.
  2122.  
  2123.      After calling the Centigram, normal procedure is to hit ^Z
  2124. to activate the terminal, followed by the entry of the remote or
  2125. console passcodes, and then proceeding with normal console
  2126. activities.  However, if ^Z is continually depressed during the
  2127. login sequence, the login program will abort and run /cmds/qnxsh.
  2128. The behavior may be somewhat erratic by the repeat use of the
  2129. escape key, but when the $ prompt appears, usually, it doesn't
  2130. deliberately go away without an 'exit' command or a ^D.
  2131. Typically, a login pattern can develop to accommodate the erratic
  2132. behavior something along the lines of: continuously depress ^Z
  2133. until $ prompt appears, hit return, possibly get 'Enter Passcode:'
  2134. message, hit return, and $ prompt appears again, set proper tty
  2135. setting, and change directory appropriately, and continue with
  2136. normal console functions.
  2137.  
  2138. Initial STTY Setting:
  2139.  
  2140.      I've had problems with my terminal settings not being set
  2141. properly during the above entry procedure.  I can correct this by
  2142. using the "stty +echo +edit" command, and, for my terminal, all
  2143. is restored.  The correct values for STTY options and keys appear
  2144. to be:
  2145.  
  2146. Options: +echo +edit +etab +ers +edel +oflow +mapcr +hangup
  2147.  break=03h     esc=1Ah     rub=7Fh     can=18h     eot=04h      up=15h
  2148.  
  2149.  down=
  2150. 0Ah    left=08h     ins=0Eh     del=0Bh
  2151.  
  2152.      The keymap, of course, can be modified as desired, but the
  2153. options, especially +edit, appear to be necessary.
  2154.  
  2155. [A somewhat detailed description of the options could follow, or
  2156. maybe just a list and a brief review of the ones I care to
  2157. comment on]
  2158.  
  2159. Disks and directories:
  2160.  
  2161.      The drives and directories are set up in a remotely MessDos
  2162. fashion.  The output of a 'pwd' command looks similar to '4:/'.
  2163. '4;' represents the drive number, and '/' is the start of the
  2164. directory structure, '4:/' being the root directory for drive 4,
  2165. '3:/tmp' being the /tmp directory on drive 3, etc.
  2166.  
  2167.      The two most important directories are 1:/cmds and 4:/cmds,
  2168. which contain, for the most part, the program files for all of
  2169. the performable commands on the system, excluding the commands
  2170. written into the shell.  The directory 1:/cmds should look
  2171. similar to:
  2172.  
  2173. $ ls
  2174.  backup        drel          ls            rm            talk
  2175.  chattr        eo            mkdir         rmdir         tcap
  2176.  choose        fdformat      mount         runfloppy     timer
  2177.  clrhouse      files         p             search        tsk
  2178.  cp            frel          pack          sh            unpack
  2179.  date          get_boolean   patch         slay          ws
  2180.  ddump         led           pwd           sleep         zap
  2181.  diff          led.init      qnxsh         spatch
  2182.  dinit         login         query         stty
  2183.  
  2184.      This is a display of many useful commands.  chattr changes
  2185. the read/write file attributes, cp is copy, ddump dumps disk
  2186. sectors in hex & ascii, led is the line editor, p is the file
  2187. print utility, and a variety of other things that you can
  2188. experiment with at your own leisure.  DO NOT USE THE TALK
  2189. COMMAND.  At least, be careful if you do.  If you try to
  2190. communicate with your own terminal, it locks communication with
  2191. the shell, and upon hangup, for some reason, causes (well, in one
  2192. instance) a major system error and system-wide reboot, which,
  2193. quite frankly, made me say 'Oops. I'm not doing that again'
  2194. when I called to check on the actual voice mailboxes, and the
  2195. phone line just sat there, dead as old wood; and I was quite
  2196. relieved that it came back up after a few minutes.
  2197.  
  2198.      The other directory, 4:/cmds, is filled with more specific
  2199. commands pertaining to functions within the voice mail system
  2200. itself.  These programs are actually run from within other
  2201. programs, to produce an easy-to-understand menu system.
  2202. Normally, this menu system is immediately run after the entry
  2203. of the remote or console passcode, but it would not be run when
  2204. using the aforementioned security bug.  It can be run from the
  2205. shell simply by typing the name of the program, 'console'.
  2206.  
  2207. Mounting and Initializing Drives:
  2208.  
  2209.      The MOUNT command produces results similar to this when run
  2210. without arguments:
  2211.  
  2212. $ mount
  2213. Drive 1:    Hard,  360k, offset =  256k, partition= Qnx
  2214. Drive 2:  Floppy,  360k, p=1Drive 3: RamDisk,   96k, partition= Qnx
  2215. Drive 4:    Hard,  6.1M, offset =  616k, partition= Qnx
  2216. $tty0  = $con,     Serial at 03F8
  2217. $tty1  = $term1 ,     Serial at 02F8
  2218. $tty2  = $term2 ,     Serial at 0420
  2219. $tty3  = $mdm   ,     Serial at 0428
  2220.  
  2221.      The Hard and Floppy drives are fairly self-explanatory,
  2222. although I can't explain why they appear to be so small, nor do
  2223. I know where the voice recordings go, or if this list contain all
  2224. the space required for voice storage.
  2225.  
  2226.      The Ramdisk, however, is a bit more interesting to me.  The
  2227. mount command used for the above-mentioned disk 3 was:
  2228.  
  2229. $ mount ramdisk 3 s=96k -v
  2230.  
  2231.       Although I'm not sure what the -v qualifier does, the rest
  2232. is fairly straightforward.  I assume that the size of the drive
  2233. can be greater than 96k, although I haven't yet played with it to
  2234. see how far it can go.  To initialize the drive, the following
  2235. command was used:
  2236.  
  2237. $ dinit 3
  2238.  
  2239.      Quite simple, really.   Now the drive is ready for use, so
  2240. one can 'mkdir 3:/tmp' or such and route files there as desired,
  2241. or use it for whatever purpose.  If something is accidentally
  2242. redirected to the console with >$cons, you can use the line
  2243. editor 'led' to create a temporary file and then use the print
  2244. utility 'p' to clear the console's screen by using "p filename
  2245. >$cons", where filename contains a clear screen of 25 lines, or
  2246. an ANSI bomb (if appropriate), or a full-screen DobbsHead or
  2247. whatever you like.
  2248.  
  2249. EVMON and password collecting:
  2250.  
  2251.      The evmon utility is responsible for informing the system
  2252. manager about the activity currently taking place within the
  2253. voice mail system.  Run alone, evmon produces output similar to:
  2254.  
  2255. $ evmon
  2256. Type Ctrl-C to terminate.
  2257. ln  26 tt 3
  2258. ln  26 line break
  2259. ln  26 onhook
  2260. ln  28 ringing
  2261. ln  28 tt 8
  2262. ln  28 tt 7
  2263. ln  28 tt 6
  2264. ln  28 tt 2
  2265. ln  28 offhook
  2266. ln  28 tt *
  2267. ln  28 tt 2
  2268. ln  28 tt 0
  2269. ln  28 tt 3
  2270. ln  28 tt 0
  2271. ln  28 line break
  2272. ln  28 onhook
  2273. [...]
  2274.  
  2275. And so forth.  This identifies a certain phone line, such as line
  2276. 28, and a certain action taking place on the line, such as the
  2277. line ringing, going on or offhook, etc.  The 'tt' stands (I
  2278. assume) for touch tone, and it is, of course, the tone currently
  2279. played on the line; which means that touchtone entry of passcodes
  2280. can be recorded and filed at will.  In the above example, the
  2281. passcode for Mailbox 8762 is 2030 (the * key, along with the 0
  2282. key, can acts as the 'user entering mailbox' key; it can,
  2283. however, also be the abort key during passcode entry, and other
  2284. things as well).  Now the user, of course, doesn't (usually) dial
  2285. 8762 to enter his mailbox, he simply dials the mailbox number and
  2286. then * plus his passcode; the reason for this is the type of
  2287. signalling coming from the switch to this particular business
  2288. line was set-up for four digit touch tone ID to route the line to
  2289. the appropriate called number.  This is not the only method of
  2290. signalling, however, as I've seen other businesses that use three
  2291. digit pulse signalling, for example, and there are others as
  2292. well.  Each may have it's own eccentricities, but I would imagine
  2293. that the line ID would be displayed with EVMON in most cases.
  2294.  
  2295.      Now, let's say we're online, and we want to play around, and
  2296. we want to collect passcodes.  We've set up our Ramdisk to normal
  2297. size and we are ready to run evmon.  We could run it, sit at our
  2298. terminal, and then record the output, but it's such a time
  2299. consuming task (this is 'real-time', after all) that sitting and
  2300. waiting be nearly pointless.  So, we use the handy features of
  2301. run-in-background and file-redirection.  (See, I told you we were
  2302. getting 'Unix-like'.)
  2303.  
  2304. $ evmon > 3:/tmp/output &
  2305. Type Ctrl-C to terminate.
  2306. 5e1e
  2307. $ ...
  2308.  
  2309.      5e1e is the task ID (TID) of the new evmon process.  Now we
  2310. can go off and perform whatever lists we want, or just play in
  2311. the directories, or route DobbsHeads or whatever.  When we decide
  2312. to end for the day, we simply stop EVMON, nab the file, remove
  2313. it, and if necessary, dismount the ramdisk.
  2314.  
  2315. $ kill 5e1e
  2316. $ p 3:/tmp/output
  2317. [ EVMON output would normally appear; if, however, ]
  2318. [ there is none, the file would be deleted during  ]
  2319. [ the kill with an error message resulting         ]
  2320. $ rm 3:/tmp/output
  2321. $ rmdir 3:/tmp
  2322. $ mount ramdisk 3
  2323.  
  2324.      and now we can ^D or exit out of the shell and say good-bye.
  2325.  
  2326.      The good thing about this EVMON procedure is that you don't
  2327. need to be online while it runs.  You could start a task sometime
  2328. at night and then wait until the next day before you kill the
  2329. process and check your results.  This usually produces large log
  2330. files anywhere from 40K to 200K, depending upon the amount of
  2331. system usage (these figures are rough estimates).  If, however,
  2332. you start the EVMON task and leave it running, then the
  2333. administrator will not be able to start a new EVMON session until
  2334. the old task is killed.  While this probably shouldn't be a
  2335. problem over the weekends, during business hours it may become a
  2336. little risky.
  2337.  
  2338.      Remember though, that the risk might be worth it, especially
  2339. if the administrator decides to check his mailbox; you'd then
  2340. have his passcode, and possibly, remote telephone access to
  2341. system administrator functions via touch-tone on the mailbox
  2342. system.
  2343.  
  2344. Task management:
  2345.  
  2346.      As we have just noted, any task like EVMON can be run in the
  2347. background by appending the command line with a &, the standard
  2348. unix 'run-in-background' character.  A Task ID will echo back in
  2349. hexadecimal, quite comparable to the unix Process ID.  The
  2350. program responsible for task management is called 'tsk' and
  2351. should be in 1:/cmds/tsk.  Output from running tsk alone should
  2352. look something like:
  2353.  
  2354. $ tsk
  2355. Tty Program         Tid  State Blk  Pri   Flags     Grp Mem Dad  Bro  Son
  2356.   0 task            0001 READY ----  1 ---IPLA----- 255 255 ---- ---- ----
  2357.   0 fsys            0002 RECV  0000  3 ---IPLA----- 255 255 ---- ---- ----
  2358.   0 dev             0003 RECV  0000  2 ---IPLA----- 255 255 ---- ---- ----
  2359.   0 idle            0004 READY ---- 15 ----PLA----- 255 255 ---- ---- 0508
  2360.   0 /cmds/timer     0607 RECV  0000  2 -S--P-AC---- 255 255 ---- ---- ----
  2361.   0 /cmds/err_log   0509 RECV  0000  5 -S--P--C---- 255 255 0A0A ---- ----
  2362.   0 /cmds/ovrseer   0A0A REPLY 0607  5 -S--P--C---- 255 255 ---- ---- 030C
  2363.   0 /cmds/recorder  010B REPLY 0509  5 -S--P--C---- 255 255 0A0A 0509 ----
  2364.   0 /cmds/master    030C REPLY 0607  5 -S--P--C---- 255 255 0A0A 010B 011C
  2365.               [ ... a wide assortment of programs ... ]
  2366.   0 /cmds/vmemo     011C REPLY 0110 13 -S-----C---- 255 255 030C 011B ----
  2367.   3 /cmds/comm      0508 RECV  5622  8 ----P-A----- 255 255 0004 ---- 5622
  2368.   3 /cmds/tsk       051D REPLY 0001  8 ------------ 255 255 301E ---- ----
  2369.   3 /cmds/qnxsh     301E REPLY 0001 14 ---------E-- 255 255 5622 ---- 051D
  2370.   3 /cmds/login     5622 REPLY 0003  8 -------C---- 255 255 0508 ---- 301E
  2371.  
  2372.  
  2373. Although I'm not quite sure at some of the specifics
  2374. displayed in this output, the important parts are obvious.  The
  2375. first column is the tty number which corresponds to the $tty list
  2376. in 'mount' (meaning that the modem I've just called is $tty3, and
  2377. I am simultaneously running four tasks from that line); the
  2378. second column is the program name (without the drive
  2379. specification); the third column is the task ID; the middle
  2380. columns are unknown to me; and the last three represent the ties
  2381. and relations to other tasks (Parent task ID, another task ID
  2382. created from the same parent, and task ID of any program called).
  2383.  
  2384.      Knowing this, it's easy to follow the tasks we've created
  2385. since login.  Initially, task 0508, /cmds/comm, was run, which
  2386. presumably contains the requisite 'what should I do know that my
  2387. user has pressed a key?' functions, which called /cmds/login to
  2388. log the user in.  Login was interrupted with ^Z and one of the
  2389. shells, qnxsh, was called to handle input from the user.
  2390. Finally, the typing of 'tsk' requires that the /cmds/tsk program
  2391. be given a task ID, and the output of the program is simply
  2392. confirming that it exists.
  2393.  
  2394.      As mentioned, to kill a task from the shell, simply type
  2395. 'kill [task-id]' where [task-id] is the four digit hexadecimal
  2396. number.
  2397.  
  2398.      There are other functions of the tsk program, as well.  The
  2399. help screen lists:
  2400.  
  2401. $ tsk ?
  2402. use: tsk [f={cmoprst}] [p=program] [t=tty] [u=userid]
  2403.      tsk code [p=program]
  2404.      tsk info
  2405.      tsk mem t=tid
  2406.      tsk names
  2407.      tsk size [p=program] [t=tty] [u=userid]
  2408.      tsk ports
  2409.      tsk
  2410. tsk
  2411.      tsk tree [+tid] [+all] [-net]
  2412.      tsk users [p=program] [t=tty] [u=userid]
  2413.      tsk vcs
  2414.      tsk who tid ...
  2415. options: +qnx -header +physical [n=]node s=sort_field
  2416.  
  2417.      I haven't seen all the information available from this, yet,
  2418. as the plain 'tsk' tells me everything I need to know; however,
  2419. you may want to play around, there's no telling what secrets are
  2420. hidden...
  2421.  
  2422. $ tsk tsk
  2423. Tsk tsk? Have I been a bad computer?
  2424.  
  2425.      See what I mean?
  2426.  
  2427. ddump:
  2428.  
  2429.      The ddump utility is used to display the contents on a
  2430. specified blocks of the disk.  It's quite simple to use.
  2431.  
  2432. $ ddump ?
  2433. use: ddump drive block_number [-v]
  2434.  
  2435.      Again, I'm not quite sure what the -v switch does, but the
  2436. instructions are very straightforward.  Normal output looks
  2437. similar to:
  2438.  
  2439. $ ddump 3 3
  2440. Place diskette in drive 3 and hit <CR>     <-- this message is always
  2441.                                                displayed by ddump.
  2442. Block 00000003  Status: 00
  2443. 000:  00 00 00 00 00 00 00 00 94 00 00 00 00 00 00 00 ................
  2444. 010:  01 00 01 00 40 02 00 00 00 02 00 00 00 00 00 00 ....@...........
  2445. 020:  00 01 00 FF FF 00 00 97 37 29 17 00 01 01 01 30 ........7).....0
  2446. 030:  C4 17 8E 62 69 74 6D 61 70 00 00 00 00 00 00 00 ...bitmap.......
  2447. 040:  00 00 00 00 C0 00 00 00 00 00 00 00 00 00 00 00 ................
  2448. 050:  00 00 00 FF FF 00 00 A5 37 29 17 00 01 01 17 30 ........7).....0
  2449. 060:  C4 25 8E 6C 6C 6C 00 00 00 00 00 00 00 00 00 00 .%.lll..........
  2450. 070:  00 00 00 00 50 0E 00 00 00 0E 00 00 00 00 00 00 ....P...........
  2451. 080:  00 01 00 FF FF 7E 05 A8 38 29 17 00 01 01 17 30 .....~..8).....0
  2452. 090:  C4 28 8F 61 62 63 00 00 00 00 00 00 00 00 00 00 .(.abc..........
  2453. 0A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
  2454. 0B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
  2455. [...etc...]
  2456.  
  2457.      As you can probably notice, what we have here is the
  2458. directory track for the ramdisk.  It lists three files, even
  2459. though the file abc no longer exists.  The actual bytes have yet
  2460. to be decoded, but, as far as the ramdisk goes, I suspect that
  2461. they'll be memory related, and not physical block related; that
  2462. is, I suspect that some of the numbers given above correspond to
  2463. the memory address of the file, and not to the actual disk-block.
  2464. So, at least for the ramdisk, finding specific files may be
  2465. difficult.  However, if you only have one file one the ramdisk
  2466. besides 'bitmap' (which appears to be mandatory across all the
  2467. disks), then the next file you create should reside on track 4
  2468. and continue working it's way up.  Therefore, if you have evmon
  2469. running and redirected to a file on the ramdisk, in order to
  2470. check the contents, it's not necessary to kill the process, and
  2471. restart evmon, etc.  Simply 'ddump 3 4', and you could get either
  2472. useless information (all the bytes are 00 or FF), or you could
  2473. get something like:
  2474.  
  2475. $ ddump 3 4
  2476. Place diskette in drive 3 and hit <CR>
  2477.  
  2478. Block 00000004  Status: 00
  2479. 000:  00 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 ................
  2480. 010:  6C 6E 20 20 32 36 20 74 74 20 33 1E 6C 6E 20 20 ln  26 tt 3.ln
  2481. 020:  32 36 20 6C 69 6E 65 20 62 72 65 61 6B 1E 6C 6E 26 line break.ln
  2482. 030:  20 20 32 36 20 6F 6E 68 6F 6F 6B 1E 6C 6E 20 20   26 onhook.ln
  2483. 040:  32 38 20 72 69 6E 67 69 6E 67 1E 6C 6E 20 20 32 28 ringing.ln  2
  2484. 050:  38 20 74 74 20 38 1E 6C 6E 20 20 32 38 20 74 74 8 tt 8.ln  28 tt
  2485. 060:  20 37 1E 6C 6E 20 20 32 38 20 74 74 20 36 1E 6C  7.ln  28 tt 6.l
  2486. 070:  6E 20 20 32 38 20 74 74 20 32 1E 6C 6E 20 20 32 n  28 tt 2.ln  2
  2487. 080:  38 20 6F 66 66 68 6F 6F 6B 1E 6C 6E 20 20 32 38 8 offhook.ln  28
  2488. 090:  20 74 74 20 2A 1E 6C 6E 20 20 32 38 20 74 74 20  tt *.ln  28 tt
  2489.  
  2490.      ... and so forth, thus making sure that the file does have
  2491. some content.  Depending upon the length of that content, you
  2492. could then choose to either keep the file running, or restart
  2493. evmon and buffer the previous output.
  2494.  
  2495. led:
  2496.  
  2497.      The program 'led' is Centigram's answer to a standard text
  2498. editor.  It is equivalent to 'ed' in unix or 'edlin' in MSDOS,
  2499. but it does have it's minor differences.  led is used to create
  2500. text files, edit, existing log files, or edit executable shell
  2501. scripts.  By typing 'led [filename]', you will enter the led
  2502. editor, and if a filename is specified, and it exists, the file
  2503. will be loaded and the editor set to line 1.  If there is no
  2504. filename on the command line, or the file does not exist, of the
  2505. file is busy, then led begins editing a null file, an empty
  2506. buffer, without the corresponding filename.  (Commands can also
  2507. be specified to be used in led after the filename is entered.  If
  2508. needed, you can experiment with this.)
  2509.  
  2510.  Notable commands from within led:
  2511.  
  2512.    i             insert
  2513.    a             append
  2514.    w [filename]  write to disk; if no file is named, attempt to
  2515.                  write to current file; if there is no current
  2516.                  file, do not write.
  2517.    d             delete current line
  2518.    a number      goto line numbered
  2519.    q             quit (if not saved, inform user to use 'qq')
  2520.    qq            Really quit
  2521.  
  2522.      When inserting or appending, led will prompt you with a '.'
  2523. period.  To end you entry, simply enter one period alone on a
  2524. line, and you will then return to command mode.  When displaying
  2525. the current entry, led will prefix
  2526. all new, updated lines, with the 'i' character.
  2527.  
  2528.      The key sequence to enter a Dobbshead into a file and
  2529. redirect it to the console, then, would be:
  2530.  
  2531. $ led 3:/dobbshead3:/dobbshead : unable to match file
  2532. i               ___
  2533.            .  /   \
  2534.            . | o o |
  2535.            . |  Y  |
  2536.            U=====  |
  2537.               \___/
  2538.            FUCK YOU!
  2539. q
  2540. ?4 buffer has been modified, use qq to quit without saving
  2541. w 3:/dobbshead
  2542. 7 [the number of lines in the file]
  2543. q
  2544. $ p 3:/dobbshead > $cons
  2545. $ rm 3:/dobbshead
  2546.  
  2547.      Ok, so it's not quite the Dobbshead.  Fuck you.
  2548.  
  2549. The console utility:
  2550.  
  2551.      The program that acts as the menu driver for the Voice Mail
  2552. System Administration, the program that is normally run upon
  2553. correct passcode entry, is /cmds/console.  This program will
  2554. simply produce a menu with a variety of sub-menu's that allow
  2555. the administrator to perform a wide assortment of tasks.  Since
  2556. this is mostly self-explanatory, I'll let you find out about
  2557. these functions for youself; I will, however, add just a few
  2558. comments about the console utility.  The first menu received
  2559. should look like this:
  2560.  
  2561. (c) All Software Copyright 1983, 1989 Centigram Corporation
  2562. All Rights Reserved.
  2563.  
  2564.          MAIN MENU
  2565.  
  2566. (R) Mailbox maintenance
  2567. (R) Report generation
  2568. (S) System maintenance
  2569. (X) Exit
  2570.  
  2571. Enter letter in () to execute command.
  2572. When you need help later, type ?.
  2573.  
  2574. COMMAND (M/R/S/X):
  2575.  
  2576.      The mailbox maintenance option is used when you want to
  2577. find specific information concerning mailboxes on the system.
  2578. For instance, to get a listing of all the mailboxes currently
  2579. being used on the system:
  2580.  
  2581. COMMAND (M/R/S/X): m
  2582.  
  2583.     MAILBOX MAINTENANCE
  2584.  
  2585. (B) Mailbox block inquiry
  2586. (C) Create new mailboxes
  2587. (D) Delete mailboxes
  2588. (E) Mailbox dump
  2589. (I) Inquire about mailboxes
  2590. (L) List maintenance
  2591. (M) Modify mailboxes
  2592. (P) Set passcode/tutorial
  2593. (R) Rotational mailboxes
  2594. (S) Search for mailboxes
  2595. (X) Exit
  2596.  
  2597. If you need help later, type ?.
  2598.  
  2599. COMMAND (B/C/D/E/I/L/M/P/R/S/X): i
  2600. Report destination (c/s1/s2) [c]:
  2601.  
  2602. Mailbox to display: 0000-9999
  2603.  
  2604.                               >>> BOBTEL <<<
  2605.                              Mailbox Data Inquiry
  2606.                             Tue Mar 31, 1992  3:07 am
  2607.  
  2608. Box        Msgs Unp Urg Rec   Mins FCOS LCOS GCOS NCOS MWI           Passwd
  2609. 8001         1   1   0   0     0.0 5    5    1    1   None           Y
  2610. 8002         0   0   0   0     0.0 5    5    1    1   None           Y (t)
  2611. 8003         0   0   0   0     0.0 12   12   1    1   None
  2612.                      0   0     0.0 12   12   1    1   None           Y
  2613. 8006            6   6   0   0     0.7 12   12   1    1   None           N
  2614. 8008         0   0   0   0     0.0 5    5    1    1   None           Y
  2615. 8013           0   0   0   0     0.0 12   12   1    1   None           1234
  2616. 8014         0   0   0   0     0.0 5    5    1    1   None           Y
  2617. 8016         0   0   0   0     0.0 12   12   1    1   None           Y
  2618. [ ... etc ... ]
  2619.  
  2620.      This simply lists every box along with the relevant
  2621. information concerning are the
  2622. Total number of messages, number of unplayed messages, number of
  2623. urgent messages, and number of received messages currently being
  2624. stored on the drive for the mailbox; Mins is the numbers of
  2625. minutes currently being used by those messages; F, L, G, and
  2626. NCOS are various classes of service for the mailboxes; MWI is
  2627. the message waiting indicator, or service light; and Passwd is
  2628. simply a Yes/No condition informing the administrator whether
  2629. the mailbox currently has a password.  The'(t)' the password
  2630. field means the box is currently in tutorial mode, and the '1234'
  2631. that replaces the Y/N condition, I assume, means the box is set
  2632. to initial tutorial mode with simple passcode 1234 -- in other
  2633. words the box is available to be used by a new subscriber.
  2634. Mailboxes with FCOS of 1 should be looked for, these represent
  2635. administration or service mailboxes, although they are not
  2636. necessarily capable of performing system administration
  2637. functions.
  2638.  
  2639.      The System maintenance option from the main menu is very
  2640. useful in that, if you don't have access to the qnxsh, you can
  2641. still run a number of tasks or print out any file you wish from
  2642. within the menu system.  The System Mainenance menu looks like:
  2643.  
  2644.          SYSTEM MAINTENANCE
  2645.  
  2646. (A) Automatic Wakeup
  2647. (B) Automated Receptionist Extensions
  2648. (D) Display modem passcode
  2649. (E) Enable modem/serial port
  2650. (F) Floppy backup
  2651. (G) Resynchronize HIS PMS room status
  2652. (H) Hard Disk Utilities
  2653. (L) Lights test
  2654. (M) Manual message purge
  2655. (N) System name
  2656. (P) Passcode
  2657. (R) Reconfiguration
  2658. (S) System shutdown
  2659. (T) Time and date
  2660. (U) Utility menu
  2661. (V) Call Detail Recorder
  2662. (W) Network menu
  2663. (X) Exit
  2664.  
  2665. Enter letter in () to execute command.
  2666. When you need help later, type ?.
  2667.  
  2668. COMMAND (A/B/D/E/F/G/H/L/M/N/P/R/S/T/U/V/W/X):
  2669.  
  2670.      If you don't have access to the 'p' command, you can still
  2671. display any specific file on the drive that you wish to see.
  2672. Choose 'v', the Call Detail Recorder option, from above, and you
  2673. will get this menu:
  2674.  
  2675. COMMAND (A/B/D/E/F/G/H/L/M/N/P/R/S/T/U/V/W/X): v
  2676. Warning: cdr is not running.
  2677.  
  2678. CALL DETAIL RECORDER MENU
  2679.  
  2680. (C) Configure CDR
  2681. (R) Run CDR
  2682. (T) Terminate CDR
  2683. (E) Run EVMON
  2684. (F) Terminate EVMON
  2685. (S) Show CDR log file
  2686. (D) Delete CDR log file
  2687. (X) Exit
  2688.  
  2689. If you need help later, type ?.
  2690.  
  2691. COMMAND (C/R/T/E/F/S/D/X):
  2692.  
  2693.      From here, you can use (C) Configure CDR to set the log
  2694. file to any name that you want, and use (S) to print that file
  2695. to your terminal.
  2696.  
  2697. COMMAND (C/R/T/E/F/S/D/X): c
  2698.  
  2699. Answer the following question to configure call detail recorder
  2700. [ simply hit return until the last 'filename' question come up ]
  2701. VoiceMemo line numbers enabled:
  2702. HOST 1 lines:
  2703.  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  2704. 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  2705. VoiceMemo line numbers:
  2706.  
  2707. EVMON: HOST 1 lines to monitor:
  2708.  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  2709. 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  2710. EVMON:VoiceMemo line numbers:
  2711. Message levels are:
  2712.      1:  Detailed VoiceMemo
  2713.      2:  VoiceMemo
  2714.      3:  Pager
  2715.      4:  Receptionist
  2716.      5:  EVMON
  2717.      6:  Automatic WakeUp
  2718.      7:  Open Account Administrator
  2719.      8:  DTMF to PBX
  2720.      9:  Message Waiting Lamp
  2721.     10:  SL-1 integration
  2722.     11:  Centrex Integration
  2723. Message levels enabled:
  2724.  2  3  7  9
  2725. Message levels:
  2726. cdr enable = [N]
  2727. Enter filename to save log data = [/logfile] /config/remote.cmds
  2728.  
  2729. Returning from the CDR configuration.
  2730.  
  2731. CALL DETAIL RECORDER MENU
  2732.  
  2733. (C) Configure CDR
  2734. (R) Run CDR
  2735. (T) Terminate CDR
  2736. (E) Run EVMON
  2737. (F) Terminate EVMON
  2738. (S) Show CDR log file
  2739. (D) Delete CDR log file
  2740. (X) Exit
  2741.  
  2742. If you need help later, type ?.
  2743.  
  2744. COMMAND (C/R/T/E/F/S/D/X): s
  2745. ad
  2746. cd
  2747. copy
  2748. date
  2749. dskchk
  2750. evmon
  2751. files
  2752. ls
  2753. mount
  2754. p
  2755. pwd
  2756. query
  2757. task
  2758. tcap
  2759. what
  2760.  
  2761.      Don't forget to return the filename back to it's original
  2762. name, as shown in the [] field, after you have finished.
  2763.  
  2764.      If you don't have access to the shell, you can also run
  2765. EVMON, from the CDR menu, using option E.  It will simply start
  2766. the evmon process displaying to your terminal, interruptable by
  2767. the break character, ^C.  This, unfortunately, cannot be
  2768. redirected or run in the background as tasks running from the
  2769. shell can.  If, however, you have some time to kill you may want
  2770. to play with it.
  2771.  
  2772.      Also from the System Maintenance menu, you can perform a
  2773. number of shell tasks without direct access to the shell.  Option
  2774. (U), Utilities Menu, has an option called Task.  This will allow
  2775. you limited shell access, possibly with redirection and '&' back-
  2776. grounding.
  2777.  
  2778. COMMAND (A/B/D/E/F/G/H/L/M/N/P/R/S/T/U/V/W/X): U
  2779.  
  2780.          UTILITY MENU
  2781.  
  2782. (B) Reboot
  2783. (H) History
  2784. (T) Task
  2785. (X) Exit
  2786.  
  2787. Enter letter in () to execute command.
  2788. When you need help later, type ?.
  2789.  
  2790. COMMAND (B/H/T/X): t
  2791.  
  2792. Choose the following commands:
  2793.              ad             cd           copy           date
  2794.          dskchk          evmon          files             ls
  2795.           mount              p            pwd          query
  2796.            task           tcap           what
  2797.  
  2798. Enter a command name or 'X' to exit: pwd
  2799. 1:/
  2800.  
  2801. Choose the following commands:
  2802.              ad             cd           copy           date
  2803.          dskchk          evmon          files      ls
  2804.          mount              p            pwd          query
  2805.           task           tcap           what
  2806.  
  2807. Enter a command name or 'X' to exit: evmon
  2808. Type Ctrl-C to terminate.
  2809. ln  29 ringing
  2810. ln  29 tt 8
  2811. ln  29 tt 0
  2812. ln  29 tt 8
  2813. ln  29 tt 6
  2814. ln  29 offhook
  2815. ln  29 record ended
  2816. [ ... etc ... ]
  2817.  
  2818. A look at 'ad':
  2819.  
  2820.      The program 'ad' is called to dump information on a variety
  2821. of things, the most useful being mailboxes.  Dumps of specific
  2822. information about a mailbox can be done either in Mailbox format,
  2823. or Raw Dump format.  Mailbox format looks like:
  2824.  
  2825. $ ad
  2826. Type #: 0
  2827. Mailbox #: 8486
  2828. (M)ailbox, (D)ump ? m
  2829.  
  2830. MAILBOX: 8486
  2831.  
  2832. Login status:
  2833.     Bad logs     = 3          Last log     = 03/26/92 12:19 pmVersion = 0
  2834.  
  2835. Configuration:
  2836.     Name #       = 207314     Greeting     = 207309     Greeting2    = 0
  2837.     Passcode     = XXXXXXXXXX Tutorial     = N          Extension    = 8486
  2838.     Ext index    = 0          Attendant    =            Attend index = 0
  2839.        Code      =            ID           = BOBTECHM   Night_treat  = M          Fcos         = 12    Lcos         = 12         Gcos         = 1          Ncos         = 1    Rot index    = 0          Rot period   = 0    Rot start    = --    wkup defined = N          wkup freq    = 0          wkup_intvl   = 0    wkup index   = 0          wkup number  =Contents:    Motd_seq     = 8          Motd_played  = N          User_msgs    = 0    Caller_msgs  = 4          Sent_cpx_msgs= 0          Sent_
  2840.          fdx_msgs= 0
  2841.     Sent_urg_msgs= 0          Tas_msgs     = 0          Pages        = 0
  2842.     Receipt      = 0          Sent_to_node = 0          Urg_to_node  = 0
  2843.     Net_urg_mlen = 0          Net_msgs_rcv = 0          Net_urg_rcv  = 0
  2844.     Net_sent_node= 0          Net_send_nurg= 0          Net_send_rcp = 0
  2845.     Greet_count  = 9          Successlogins= 1          Recpt_calls  = 0
  2846.     Recpt_complt = 0          Recpt_busy   = 0          Recpt_rna    = 0
  2847.     Recpt_msgs   = 0          Recpt_attend = 0          User_connect = 20
  2848.     Clr_connect  = 22         Callp_connect= 0          Disk_use     = 498
  2849.     Net_sent_mlen= 0          Net_rcvd_mlen= 0          Net_rcvd_urg = 0
  2850.     Net_node_mlen= 0          Net_recip_mlen=0          Net_node_urg = 0
  2851.     Text_msg_cnt = 0
  2852.  
  2853.  
  2854. Message Queues:
  2855.     TYPE           COUNT TOTAL HEAD TAIL  TYPE           COUNT TOTAL HEAD TAIL
  2856.     Free             71   ---   58   55   Unplayed          0   ---   -1   -1
  2857.     Played            2   0.5   56   57   Urgent            0   ---   -1   -1
  2858.     Receipts          0   ---   -1   -1   Undelivered       0   ---   -1   -1
  2859.     Future delivery   0   ---   -1   -1   Call placement    0   ---   -1   -1
  2860.  
  2861. Messages: 2
  2862.  #  msg #   DATE    TIME   LENGTH      SENDER     PORT   FLAGS  MSG     SIBL
  2863.                            (MINS)                               NXT PRV NXT PRV
  2864. Played Queue
  2865. 56 207126 03/26/92 12:17 pm    0.5 000000000000000  27 ------P-  57  -1  -1  -1
  2866.  
  2867. 57 207147 03/26/92 12:19 pm    0.1 000000000000000  29 ------P-  -1  56  -1  -1
  2868.  
  2869.      The Ramp format looks like:
  2870. $ ad
  2871. Type #: 0
  2872. Mailbox #: 8487
  2873. (M)ailbox, (D)ump ? d
  2874.  
  2875. HEX: 8487
  2876. 000: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
  2877. 010: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
  2878. 020: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 34 38 |..............48|
  2879. 030: 37 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |7...............|
  2880. 040: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
  2881. 050: 00 00 00 00 00 00 00 00 - 00 00 42 49 4f 54 45 43 |..........BOBTEC|
  2882. 060: 48 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |H...............|
  2883. 070: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
  2884. 080: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 37 32 33 |.............723|
  2885. 090: 36 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |6...............|
  2886. 0a0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
  2887. 0b0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
  2888. 0c0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
  2889. [mostly deleted -- the list continues to hex fff.]
  2890.  
  2891.      One of the unfortunate aspects is that the password is not
  2892. displayed in the Mailbox format (Awwww!).   I can tell you now,
  2893. though, that it also isn't displayed anywhere in the Raw Dump
  2894. format.  The program 'asetpass' was used to change the password
  2895. of a test mailbox, and both full dumps were downloaded and
  2896. compared; they matched exactly.  So, it looks like the passcodes
  2897. are probably stored somewhere else, and the dump simply contains
  2898. a link to the appropriate offset; which meansthe only way, so
  2899. far, to get passcodes for mailboxes is to capture them in EVMON.
  2900.  
  2901. Intricacies of the login program:
  2902.  
  2903.      The console login program is 1:/cmds/login.  Although I
  2904. can't even recognize any valid 8080 series assembly in the
  2905. program (and I'm told the Centigram boxes run on the 8080
  2906. family), I did manage to find a few interesting tidbits inside of
  2907. it.  Firstly, the console and remote passwords seems to be stored
  2908. in the file /config/rates; unfortunately, it's encrypted and I'm
  2909. not going to try to break the scheme.  /config/rates looks like
  2910. this:
  2911.  
  2912. $ p /config/rates
  2913. \CE\FFC~C~\0A\00\00\00\00\00\0A\00\00\00\00\00\0A\00\00\00\00\00\0A\00\00\00\00
  2914. \00\0A\00\00\00\00\00\0A\00\00\00\00\00\0A\00\00\00\00\00\00\00\00\00\00\00\00
  2915. \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00
  2916.  
  2917.      Accepting the \CE as some sort of control byte, this file is
  2918. divided up into about eight empty sections of five bytes a piece,
  2919. mostly null, indicating that, possibly, there are a number of
  2920. acceptable passcode combinations, or a number of different
  2921. functions with different passcodes.  In this instance, only one
  2922. passcode appears to be selected.  I am still unsure, however,
  2923. whether this is actually a password file, or a file that would
  2924. acts as a pointer to another space on the disk which contains the
  2925. actual password.  I would assume, for this login program, that it
  2926. is actually an encrypted password.
  2927.  
  2928.      Another very interesting thing sleeping within the confines
  2929. of the login program is the inconspicuous string 'QNX'.  It sits
  2930. in the code between two 'Enter Passcode:' prompts, separated by
  2931. \00's.   I believe this to be a system-wide backdoor placed into
  2932. the login program by Centigram, Corp.  Such a thing does exist;
  2933. whenever Centigram wants to get into a certain mailbox system to
  2934. perform maintenance or solve a problem, they can.  They may,
  2935. however, require the Serial number of the machine or of the Hard
  2936. Drive, in order to get this access.  (This serial number would be
  2937. provided by the company requiring service.)
  2938.  
  2939.      When logging in with QNX, a very strange thing happens.
  2940.  
  2941. (^Z)
  2942. Enter Passcode: (QNX^M)  Enter Passcode:
  2943.  
  2944.      A second passcode prompt appears, a prompt in which the
  2945. 'QNX' passcode produces an Invalid Passcode message.  I believe
  2946. that when Centigram logs in from remote, they use this procedure,
  2947. along with either a predetermined passcode, or a passcode
  2948. determined based on a serial number, to access the system.  I
  2949. have not ever seen this procedure actually done, but it is the
  2950. best speculation that I can give.
  2951.  
  2952.      I should also make note of a somewhat less important point.
  2953. Should the console have no passcodes assigned, a simple ^Z for
  2954. terminal activation will start the /cmds/console program, and
  2955. log the user directly in without prompting for a passcode.  The
  2956. odds on finding a Centigram like this, nowadays, is probably as
  2957. remote as being struck by lightning, but personally, I can recall
  2958. a time a number of years back when a Florida company hadn't yet
  2959. passcode protected a Centigram.  It was very fun to have such a
  2960. large number of people communicating back and forth in normal
  2961. voice; it was even more fun to hop on conferences with a number
  2962. of people and record the stupidity of the average Bell operator.
  2963.  
  2964. Special Keys or Strings:
  2965.  
  2966.      There are a number of special characters or strings that are
  2967. important to either the shell or the program being executed.
  2968. Some of these are:
  2969.  
  2970. ?     after the program name, gives help list for that program.
  2971. &     runs a task in the background
  2972. :     sets the comment field (for text within shell scripts)
  2973. ;     command delimiter within the shell
  2974. >     redirects output of a task to a file
  2975. <     (theoretically) routes input from a file
  2976. $cons the 'filename' of the console (redirectable)
  2977. $tty# the 'filename' of tty number '#'
  2978. $mdm  the 'filename' of the modem line
  2979. #$    ? produces a value like '1920', '321d'
  2980.         probably the TID of the current process
  2981. ##    ? produces a value like 'ffff'
  2982. #%    ? produces a value like '0020', '001d'
  2983. #&    ? produces a value like '0000'
  2984. #?    ? produces a value like '0000'
  2985. #*    a null argument
  2986. #g    ? produces a value like '00ff'
  2987. #i    directly followed by a number, produces '0000'
  2988.       not followed, produces the error 'non-existent integer
  2989.       variable' probably used in conjunction with environment
  2990.       variables
  2991. #k    accepts a line from current input (stdin) to be
  2992.       substituted on the command line
  2993. #m    ? '00ff'
  2994. #n    ? '0000'
  2995. #p    ? '0042'
  2996. #s    produces the error 'non-existent string variable'
  2997.       probably used in conjunction with environment variables
  2998. #t    ? '0003'
  2999. #u    ? some string similar to 'system'
  3000. #D    ? '0018'
  3001. #M    ? '0004'
  3002. #Y    ? '005c'
  3003.  
  3004. "Notes on Centigram Voice Mail system Consoles" was written
  3005. anonymously.  There are no group affiliations tied to this file.
  3006.  
  3007. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3008. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3009.  
  3010.                            NIA074 / File 05
  3011.  
  3012.                       How to steal Information
  3013.  
  3014.                             The Butler...
  3015.  
  3016.  
  3017.  
  3018. Now that we have entered the "Information Age" we must realize that
  3019. information is an asset worth protecting.  The problem is that what
  3020. some people consider trash others view as gold.  That is why on any
  3021. given day you can find mounds of valuable information in most
  3022. companies trashcans, employees desks, and on floppy disks lying
  3023. around the office.  This article will focus on the different ways
  3024. of gaining access to that information which is most often left
  3025. unprotected.
  3026.  
  3027. To begin with I will discuss the most vulnerable aspect of any
  3028. security plan, people.  Individuals are the weakest link in any
  3029. security system whether it be a guard check point or a CN/A
  3030. operator, the reason this is so is because when ever a human is
  3031. brought into the picture to determine whether or not to give access
  3032. or information to another human more often than not a judgement
  3033. call has to be made.  As human beings we have feelings like sorrow
  3034. and pity to deal with, and those feelings can and are exploited.  
  3035.  
  3036. Now lets say you wanted to gain access to a certain building that
  3037. required some sort of Key-Card to open the door.  With out having
  3038. one yourself you could either 1) steal one, 2) make your own, or 3)
  3039. walk in behind someone else who does have one.  Number 3 is the one
  3040. I want to expand on here.  I have used this method myself, for
  3041. legitimate purposes of course.  By looking like you belong in said
  3042. building and waiting by the door with a confused and sad look on
  3043. your face you could say to someone "I left my Key-Card at home" and
  3044. just walk in behind them.  Now this probably wouldn't work at a
  3045. small company but more likely at a large institution with several
  3046. entrances, use the back door!  When I said look like you belong I
  3047. mean dress accordingly.  i.e. to go to a high tech software company
  3048. you should be wearing a suit with a briefcase in hand.  Just in
  3049. case why don't you case the establishment for a few days before
  3050. your attempt and make note of what the majority of employees are
  3051. wearing.
  3052.  
  3053. Another scenario could be at a industrial firm that you were
  3054. interested in.  In this case we will try and play on another human
  3055. feeling, greed.  Chances are in this situation the individuals
  3056. responsible for any and all computers are, well less than computer
  3057. literate.  You could send them a letter in the mail advertising a
  3058. free cleaning and inspection of all personal computers on the
  3059. premises.  This is an excellent way of gathering information from
  3060. heavily industrialized companies.  Usually places where computers
  3061. are practically on the factory floor will be more than happy to let
  3062. you clean their machines.  While doing so just copy to your hearts
  3063. content, or if you are adventurous you could take a portable and
  3064. connect it via a serial port or whatever and copy the entire hard
  3065. drive.  Just tell them you are running some diagnostics.
  3066.  
  3067. The last scenario I will cover is another example of disguising
  3068. yourself.  I know this one works and it seems that people are doing
  3069. it quite frequently.  Just get a job with a janitorial firm and
  3070. sneak away from the actual work to do your bidding.
  3071.  
  3072. After gaining access to any company by whatever means you have to
  3073. know where to look.  To begin with go to the largest office you can
  3074. find, usually in a corner with a good view.  These prime offices
  3075. usually belong to those in the upper echelon of the company. Once
  3076. in the office you obviously should start with computers since you
  3077. can copy electronic information easier than hardcopy.  Next you
  3078. should turn to the desk drawer and file cabinets in the office. 
  3079. Check the rolodex for dialup #'s and passwords.  Basically don't
  3080. leave any stone unturned.  Depending on what you are looking for
  3081. you might want to start out in the Data Processing department since
  3082. their computers are the heart of the whole business.  From there
  3083. you can plant trojan horses, copy proprietary software, or steal
  3084. specific data.  
  3085.  
  3086. Some other means of disguise:
  3087.  
  3088. PC Repair Shop Technician
  3089. Software Demonstrator
  3090.  
  3091. All of the above items can be used for completely legal purposes
  3092. also.
  3093.  
  3094. The above have all been physical means of gathering information,
  3095. now lets turn to other ways.
  3096.  
  3097.  
  3098. Van Eck 
  3099.  
  3100. With the proper equipment it is possible to capture every
  3101. electronic pulse that is sent out from a keyboard or a monitor
  3102. while you are hidden far away from the actual activity.  The U.S.
  3103. Government calls this the Tempest project.  If you are ever in a
  3104. government office just take a look at their computers.  I know that
  3105. the armed services have all of their computers protected by heavy
  3106. metal shielding around all computers, even pc's in army recruiting
  3107. stations.  Check the loompatics(sp) catalog for a book called Van-
  3108. -Eck Phreaking, it explains the whole process and the equipment
  3109. needed. This method would generally be used to steal usernames and
  3110. passwords.
  3111.  
  3112.  
  3113. Network Protocol Analyzers
  3114.  
  3115. If you have access to a Local Area Network you might already have
  3116. one of these puppies.  A Network protocol analyzer is a device that
  3117. lets you examine every packet that is sent out over a network.  I
  3118. am talking about Novell, Banyan and 3COM networks if you are
  3119. wondering.  By using one of these you can capture every byte that
  3120. travels from any given workstation to the file server.   This
  3121. equipment is very expensive but could well be worth it depending on
  3122. what you are after.  This method could be used to steal everything
  3123. from usernames and passwords to actual data.
  3124.  
  3125.  
  3126. Keyboard & Monitor Capture program
  3127.  
  3128. I have never done this but I think it could be possible to write a
  3129. program (a trojan) that would capture everything that is entered
  3130. from the keyboard and everything that goes across the monitor and
  3131. save it in a hidden file somewhere on a network.
  3132.  
  3133.  
  3134. Old Reliable--Social Engineering
  3135.  
  3136. Now (with a known bug) we can social engineer electronically via  
  3137. E-mail.  The Telnet bug which allows you to send a message to
  3138. someone without them knowing the source can be very useful. 
  3139. Unlimited applications.....And there is always the telephone for
  3140. the same purpose.  Just make up a story and try it out.  The
  3141. obvious "Hello I am the Sysop please change your password to ____"
  3142. is not what I am talking about.  You need to be more creative like
  3143. posing as a salesman or a surveyor to get information that will
  3144. make your "Crack" easier.
  3145.  
  3146.  
  3147. I hope this helps you with your quest for knowledge!!!
  3148.  
  3149.  
  3150. The Butler...
  3151.  
  3152. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3153. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3154.  
  3155.                               NIA074 / File 07
  3156.  
  3157.                     Invisible Killer Chips Now Availible
  3158.  
  3159.                            Jean-Bernard Condat
  3160.                             General Secretary
  3161.                        Chaos Computer Club France
  3162.                                B.P. 8005
  3163.                        69351 Lyon Cedex 08, France
  3164.                            Tel.: +33 78 61 15 88
  3165.  
  3166. Intelligence Newsletter (10 rue du Sentier, 75002 Paris, France)
  3167. No. 186 (Jan. 29, 1992), page 2, ISSN 0997-7139
  3168. By: Jean-Bernard Condat (CCCF, B.P. 8005, 69351 Lyon Cedex 08, France)
  3169.  
  3170.  
  3171.   The military use of computer viruses is often overblown, if not just
  3172. simple disinformation as in the recent Iraqi case. But researchers at
  3173. Boston University have developed and patented (U.S. patent 5 049 775)
  3174. an infinitely more offensive and effective anti-computer agent: the
  3175. silicon ant. Micro-electronics has perfected technologies for making
  3176. toys and machines so small that they are invisible.
  3177.  
  3178.   Using piezoelectric ceramics which expand or contract under an
  3179. electric current, the researchers constructed a microscopic ship with
  3180. three "legs" on each side and a "cutter" in front. By alternating
  3181. current in different sides of each "leg", it bends forward or backward.
  3182.  
  3183.   Under remote control the killer chips can be "walked" into a computer
  3184. and cut up other microscopic chips, turn around and "walk" away, leaving
  3185. invisible damage in the computer system. The killer chips could be solar
  3186. powered and therefore have an indefinite life-span.
  3187.  
  3188.  
  3189.                              PATENT DESCRIPTION
  3190.  
  3191.  
  3192. 008245420  WPI Acc No: 90-132421/17
  3193. XRPX Acc No: N90-102550
  3194.    Piezoelectric micro-machine or robot basic operating unit - made by
  3195.     covering silicon cantilever beams projecting from frame with
  3196.     piezoelectric material when applied voltages cause them to deflect
  3197. Patent Assignee: (UYBO-) BOSTON UNIV
  3198. Author (inventor): SMITS J G
  3199. Number of Patents: 002
  3200. Patent Family:
  3201.     CC Number    Kind     Date      Week
  3202.     WO 9003665     A     900405     9017   (Basic)
  3203.     US 5049775     A     910917     9140
  3204. Priority Data (CC,No,Date): US 251565 (880930);
  3205. Applications (CC,No,Date): WO 89US4129 (890921);
  3206. EP and/or WO Language: English
  3207. EP and/or WO Cited Patents:
  3208.     No.SR.Pub
  3209. Designated States (National): JP (Regional): AT; BE; CH; DE; FR; GB; IT; LU
  3210.     ; NL; SE
  3211. Abstract (Basic): WO 9003665
  3212.          An electrical micromachine is made by securing films (20,22) of
  3213.     piezoelectric material to the top surfaces (16,18) of crystalline
  3214.     silicon beams (12,14) projecting from a crystalline silicon body (10)
  3215.     to form a bimorph structure. A potential applied across the ends
  3216.     (24,26) of the piezoelectric films causes the beams to deflect. The
  3217.     piezoelectric material used is zinc oxide.
  3218.           A number of such micromachines can be assembled to form a robot,
  3219.     and when a foot (30) is provided the machine can move itself along a
  3220.     surface by sequential deflecting and straightening of the beams. The
  3221.     foot can be associated with a toothed wheel to produce rotary motion.
  3222.     The micromachine may be solar powered, and can be associated with
  3223.     sensors or a microprocessor with programmable memory.
  3224.           USE - Microsurgical tools, and robots for grasping, carrying or
  3225.     cutting tasks. @(33pp Dwg.No.1/10)@
  3226. Abstract (US): 9140 US 5049775
  3227.          The piezoelectric actuation machine comprises two cantilever beams
  3228.     extending from a frame. The beams comprise a piezoelectric material
  3229.     such that application of an electric potential across the material of
  3230.     each beam rotationally diplaces the first and second beams relative to
  3231.     each other.
  3232.            An actuating member is secured between displaceable surfaces on
  3233.     the beams and extends orthogonally from a plane through the beams such
  3234.     that relative displacement of the beams displaces a portion of the
  3235.     member in a direction orthogonal to beam displacement. A rigid object
  3236.     contacting the displaced portion of the member is translated relative
  3237.     to the member and the frame.
  3238.            USE - For piezoelectric micromachines e.g. small robot or
  3239.     cutting tool. @(17pp)@
  3240. File Segment: EPI
  3241. Derwent Class: S05; V06; X25; R46;
  3242. Int Pat Class: H01L-041/09
  3243. Manual Codes (EPI/S-X): S05-B; V06-M06D; X25-A03E
  3244.  
  3245. [Editor's Note: I have not investigated to see if this patent really does
  3246.  exist due to the timing of the article so close to the release date.  This
  3247.  is a rush-in and I am basing all of its credibility to Chaos Computer
  3248.  Club France (CCCF) and Jean-Bernard Condat.]
  3249.  
  3250. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  3251.  
  3252.  
  3253.  
  3254. Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
  3255.